X 我知道了TIPS:左右滑动导航栏可以查看更多栏目
各位前辈,我想请教一下数组指针与指针数组,函数指针与指针函数的区别与联系,在使用中如何运用,请叙说详细点,谢谢。
>> 本文固定链接: http://www.vcgood.com/archives/1589
>> 转载请注明: 玩转~~~世界 2007年06月13日 于 C语言帝国 发表
参看论坛里的教程阿
数组指针,指针函数基本上没有这两种说法
指针,数组,函数指针,估计这样理解起来比较容易,当然函数指针也是指针的一种;[code]int a[10] ={ 0,1,2,3,4,5,6,7,8,9 };int b = 10;int *c; //指针其实就是地址,通过地址你可以访问b或a数组中的任何一个元素
c = &a[0]; //也可以是 c = a;
printf( "%d\n", *(c + 5) );[/code]上面需要注意的是因为指针的类型(也就是指针指向的数据的类型)是int型,这个在使用的时候需要注意.
函数指针 是个比较特殊的指针,指向函数的指针.可以通过这个指针调用函数.其实函数名是个指针,所以可以把函数赋值给一个指针,又因为函数有参数,你就需要声明这个指针的参数;类似的[code]int max( int val1, int val2);
int (*pmax)(int val1, int val2);//注意这里(*pmax)必须有个扩号,否则就结合律来说会先和后面的扩号结合,变成申明一个返回指针的函数了.[/code]//上面声明好指针后就可以对它赋值了.[code]pmax = max;pmax( 5, 6 );[/code]
你必须先 登录才能发表评论。
参看论坛里的教程阿
数组指针,指针函数基本上没有这两种说法
指针,数组,函数指针,估计这样理解起来比较容易,当然函数指针也是指针的一种;
[code]
int a[10] ={ 0,1,2,3,4,5,6,7,8,9 };
int b = 10;
int *c; //指针其实就是地址,通过地址你可以访问b或a数组中的任何一个元素
c = &a[0]; //也可以是 c = a;
printf( "%d\n", *(c + 5) );
[/code]
上面需要注意的是因为指针的类型(也就是指针指向的数据的类型)是int型,这个在使用的时候需要注意.
函数指针 是个比较特殊的指针,指向函数的指针.可以通过这个指针调用函数.
其实函数名是个指针,所以可以把函数赋值给一个指针,又因为函数有参数,你就需要声明这个指针的参数;
类似的
[code]
int max( int val1, int val2);
int (*pmax)(int val1, int val2);//注意这里(*pmax)必须有个扩号,否则就结合律来说会先和后面的扩号结合,变成申明一个返回指针的函数了.
[/code]
//上面声明好指针后就可以对它赋值了.
[code]
pmax = max;
pmax( 5, 6 );
[/code]