指针数组与数组指针

来源:互联网 发布:一根网线几个淘宝店铺 编辑:程序博客网 时间:2024/05/19 19:34

int *a[10]:指针数组,a是数组,数组a里存放了10个int*型指针。

int  (*a)[10]:a是指针,指向一个数组,此数组有10个int型元素。

int (**a)[10]:a是二级指针,指向一个数组,数组有10个int型元素。

int*(*a)[10]:a是指针,指向一个数组,数组有10个int*型元素。

int(*a[10])():a是数组,数组里面有10个函数指针,指向的函数类型没有参数且返回的是int函数。

int*((*a)[10])():a是指针,指向一个数组,数组有10个函数指针,指针指向的函数类型没有参数且返回的是int*函数。*

int (*a)(int):a是函数指针,指向一个函数,此函数的类型有一个int参数且返回int类型。*

int (*(*a)(int,int))(int):a是函数指针,指向的函数的类型是有两个int参数并且返回一个函数指针的函数,返回的函数指针指向有一个int参数且返回int的函数。


#include <iostream>#include <string>using namespace std;int main(){int a[] = { 1, 2, 3, 4, 5 };int *ptr = (int*)(&a + 1);int *ptr1 = a + 1;cout << *(ptr - 1) << endl;  //输出5cout << *ptr1 << endl;       //输出2return 0;}

上面第一个输出为5的原因是:a表示一个1行5列数组,int *ptr = (int*)(&a + 1);的意思是,指向a数组的第6个元素。数组名本身就是指针,再加上&就变成了双指针,即二维数组,加1,就是数组整体加一行。

0 0