#include "stdio.h"
void swap(int *p1,int *p2);
void main()
{
int *p1,*p2;
int a,b;
printf("Enter Numbers:\n");
scanf("%d%d",&a,&b);
p1=&a;
p2=&b;
if(a>b) swap(p1,p2);
printf("%d %d\n",a,b);
printf("%d %d\n",*p1,*p2);
}
void swap(int *p1,int *p2)
{ int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
上面程序中主函数传递的是地址,而void swap(int *p1,int *p2)是int *p1和int *p2啊??
swap() 中为什么是 int *p1 和int *p2 啊?*p1和*p2不是p1、p2指向的变量么!而主函数传递过来的是地址啊! 百思不得其解!= =!
C语言函数里的参数是指针的问题
函数定义和函数调用是两个概念,函数定义 为f(int *arr),表示参数是一个整型指针,因此使用该函数时要传递一个地址,如变量int a=0; 调用函数f传递a的地址时需要写为f(&a);而对于数组来说,如int b[]=[1,2,3], b本身就是数组首元素的地址,因此调用函数f传递数组首地址需要写为f(b)。
C语言指针作函数参数时的返回问题
进入函数后,函数创建几个空间给形参,再把实参数值拷过来。退出函数时,把形参空间释放,则影响不到实参。这就是值传递。swap(int *p1,int *p2)函数首先创建两个空间,是指针,再把实参复制过来,即p1=pointer_1=&a,p2=pointer_2=&b,改变p1,p2就分别指向了a,b.改变p1指向的值就是改变了a。...
c语言指针和函数的问题
在C语言中,值传递是唯一可用的参数传递机制。但是据笔者所知,由于受指针变量作为函数参数的影响,有许多朋友还认为这种情况是引用传递。这是错误的。请看下面的代码:int swap(int *x, int *y){int temp;temp = *x; *x = *y; *y = temp;return temp;}void main(){int a = 1, b = 2;int *p1 ...
c语言中函数指针作为参数与函数的嵌套
您好,针对这个问题 Status InOrderTraverse(BiTree T ,Status(*Visit)(TElemType e))函数中第2个参数是一个指向函数的指针,这样做的目的是为了程序的灵活性。试想如果给你一个整型数100,要求分别按照10进行、16进制输出,你可以写一个输出10进制函数与输出16进制函数,当你有需要输出16进制时,只需...
为什么C语言函数传参数的时候要传指针?
代码在编译时会出现 error C2664: 'InsertSort' : cannot convert parameter 1 from 'int' to 'int []'这是因为用数组名做函数实参时,向形参(数组名或指针变量)传递的是数组首元素地址,因此对参数的类型做一下改变,如下图所示:
在c语言中,指针作为函数参数,形参只能传递值,而不能传递地址,是怎么回 ...
C语言中,函数参数只能传值。与传值对应的是传引用,C语言不支持函数参数传引用,C++语言才支持。C++传引用函数:void foo(int& a) { a = 3; } 假如a = 2,执行foo(a)后,a = 3。--- C语言可以模拟传引用,方法是通过指针来实现:void foo2(int* ap) { *ap = 3; } 假如a = 2...
求C语言错误分析,指针做函数参数
int i,j,k,*p1[5]={p,p,p,p,p};你定义了一个指针数组,但后边用的时候p1[0],p[1]等都是一样的啊,都为p,不太理解 所以我帮你重新写了一个 void s(int *p){ int temp;\/\/把四个最小值先放在前四个位置中 for (int i=0;i<4;i++){ for (int j=i+1;j<25;j++){ ...
C语言,使用指针作为函数参数,写一求数组中最大值和最小指的函数
*n=arry[1];for(inti=0;i<size;i++){ if(arry[i]>*m)*m=arry[i];if(arry[i]<*n)*n=arry[i];} } intmain(intargc,constchar*argv[]){。inta[]={1,5,6,2,3,8,9,7,4,5};//定义一个十个数据的数组 intmax;//存放...
C语言指针作为函数参数,返回值为0
return *p; \/\/返回指针p指向的地址}int main(){ double *p=... \/\/初始化指针p double *q; \/\/用于接收改变的指针 ... q=a(&p); \/\/将指针p的地址传递给a ... return 0;} 如果是用作dll的话,那么你应该使用和相应语言兼容的类型才行 ...
c语言求解 指针变量作为函数参数为什么用void 定义而且不用返回值就能...
这个很容易理解,指针变量保存的是地址信息,*p这个是取p指针保存的地址里面的值,更改的也是保持的地址里面的值。而函数中传递的是变量的拷贝,比如指针传递的就是他保存的地址 如果在函数中对他保存的地址改掉,那么是不影响主函数中的变量的 错误的原因是scanf中是用英文的逗号,而你输入的是中文的...