您的位置:首页 > 编程语言 > C语言/C++

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

2015-12-03 13:55 337 查看
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后,指向的是数组首地址的下一个地址。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 函数 指针