1.
void change(int x,int y)
{
int tmp;
tmp=x;
x=y;
y=tmp;
}
int main()
{
int a=3;
int b=5;
change(a,b);
printf("a=%d, b=%d\n",a,b);
}
输出结果:a=3, b=5
由此可以看出, 在调用函数的时候,并没有改变a, b本身的值。所以说,函数调用是值传递。
void change(int * x,int *y)
{
int tmp;
tmp=*x;
*x=*y;
*y=tmp;
}
int main()
{
int a=3;
int b=5;
change(&a,&b);
printf("a=%d, b=%d\n",a,b);
return 0;
}
输出结果:a=5, b=3
如果运用指针,就改变了本身的值。
2.
int * p (指向int型的指针,也可指向int 数组);
int **p(二级指针,指向int 型的数据);
int p[n]([]优先级高,理解为int (p[n]));
int (*p)[n](二维数组指针);
int p()(函数,返回int );
int (*p)()(函数指针,指向原型为int func()的函数);
3.
而我们要知道怎样定义一个指针指向函数,int (*p)(int,int)这是固定写法,前面的int是指针将来指向的函数的返回值的类型,如果没有函数返回值,那就是void,后面括号里的两个int 当然就是指针将指向的函数的形参。指针指向函数用起来确实有点抽象,要想熟练运用的话就多去做一些这方面的练习吧!
int sum(int x,int y)
{
return x+y;
}
int main()
{
int a=5;
int b=6;
int (*p)(int,int);
p=sum;
int result=(*p)(a,b);
printf("The result is %d\n",result);
return 0;
}
输出结果:
The result is 11