指针类型学习总结(函数指针、数组指针和指针数组)

December 3, 2015 1:41 PM

指针是C语言的一大特色,让我们可以访问硬件,让c变得威力无穷,然而,与之相伴的是不小的风险。

1.牛刀小试–常见指针的含义

形式含义
void (*f)()函数指针,本质是一个指针
void* f()函数返回指针,指针函数,本质是一个函数
const int *常量指针,指针本身不可变
int* const指向const修饰内容的指针,指针本身可变
const int *const指向const修饰的内容的常量指针

2.深入浅出–不常见指针的含义

形式含义
float (**p)[10]p是一个二级指针,指向的是一个一维数组指针
float **p[10]p是一个指针数组,数组中每一个元素都是指向指针的指针
float*((*p)[10])p是一个指向一维数组的指针,数组中每个元素的类型是float*
float(*p[10])()p是一个指针数组,数组中每一个元素都是一个函数指针
float*(*p)[10]等价于float*((*p)[10])
float(*(*F)(int,int))(int)F是一个函数指针,指向函数类型输入两个int变量,返回一个
函数指针,这个函数指针输入一个变量,返回一个int。

==注意:以上类型的判断关键在于优先级的判断,[]的优先级比高,()优先级最高。*==

3.示例

int x[10] = {1,2,3,6,5,4,9,8,7,5};
int(*y)[10] = &x;
int *z = (int*)(&x);

cout << **(y+1) << endl <<*(z+1);
输出结果

4236901
2

解释

x是一个数组名,代表一个常量指针,指向数组的首地址;
y是一个指针,指向一位数组x,y+1后指向的是数组最后一个地址的下一个地址;
z是一个普通指针,z+1后,指向的是数组首地址的下一个地址。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值