admin管理员组文章数量:1487745
【c语言】 指针知识精简版
整型指针
整型指针,用来存放整型的地址,将整型a的地址用取地址符(&)取出来,存放在指针p中
代码语言:javascript代码运行次数:0运行复制int a = 10;
int* p = &a;
int* 类型的指针访问4个字节,若p+1,则跳过4个字节
浮点型指针
浮点型指针,用来存放浮点型的地址,将浮点型a的地址取(&)出来,存放在指针p中
代码语言:javascript代码运行次数:0运行复制float a = 10.5;
float* p = &a;
float* 类型的指针访问4个字节,若p+1,则跳过4个字节
字符型指针
字符型指针,用来存放字符型的地址,将字符型a的地址取(&)出来,存放在指针p中
代码语言:javascript代码运行次数:0运行复制char a = 'b';
char* p = &a;
char* 类型的指针访问1个字节,若p+1,则跳过1个字节
数组指针
以整型数组指针为例
代码语言:javascript代码运行次数:0运行复制int arr[3] = { 1, 2, 3 };
int (*p)[3] = &arr;
此时p的类型为 int (*)[3]
代码语言:javascript代码运行次数:0运行复制int arr[] = { 1, 2, 3 };
int (*p)[3] = &arr;
补充:
arr为数组首元素的地址,两种情况下除外
1. arr单独放在sizeof内部时,sizeof(arr),求的是整个数组的大小
2.&arr,此时取出的是整个数组的地址
所以,&arr,需要用数组指针存放;若为arr,则用整型指针存放即可
float和char的数组指针与int类似,将int改为相应的类型即可
代码语言:javascript代码运行次数:0运行复制float arr1[] = { 2.5, 3.3, 6.0 };
float (*pf)[3] = &arr1;
char arr2[] = { 'a', 'b', 'c' };
char (*pc)[3] = &arr2;
指针类型为 float (*)[3] , char (*)[3]
函数指针
依然以整型为例
定义一个函数,f返回值类型为int,两个形参类型为int
代码语言:javascript代码运行次数:0运行复制int fun(int a, int b)
{
.....
}
函数指针写法为下面的(1)(2)
代码语言:javascript代码运行次数:0运行复制int fun(int a, int b)
{
...
}
int (*p)(int a, int b) = fun;//(1)
int (*p)(int a, int b) = &fun;//(2)
对函数而言,函数名就是函数的地址,当然,如果加上&也是一样的,都能取出函数fun的地址
指针类型为 int (*)(int a, int b)
如果函数没有返回值,没有参数,则类型为 void (*)()
总之,函数指针为 函数返回类型 (*指针名)(函数参数)
这次分享就到这里,感谢阅读!
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-03-10,如有侵权请联系 cloudcommunity@tencent 删除int函数数组指针char本文标签: c语言 指针知识精简版
版权声明:本文标题:【c语言】 指针知识精简版 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/shuma/1754693084a3177637.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论