关于数组指针和指针数组的问题
数组指针是 类似int(*p) [数字],还是int *p [数字]??有什么好的方法区分吗?? 本帖最后由 Croper 于 2019-1-14 10:28 编辑
int (*p); //这是数组指针;
int *q; //这是指针数组;
其实这就是一个运算优先级问题,[]比*优先;
如果要记的话你可以认为数组指针相比指针数组不常用,所以它的写法要麻烦些。。
有,牢记运算符的优先级 Croper 发表于 2019-1-14 10:20
其实这就是一个运算优先级问题,[]比*优先;
如果要记的话你可以认为数组指针相比指针数组不常用,所 ...
就是两者所存储的数据分别是什么呢? 1809228982 发表于 2019-1-15 11:12
就是两者所存储的数据分别是什么呢?
int(*p) [数字]是数组指针,指向的是数组首地址,代表的是数组。所以你可以使用(*p)来替代数组的表示。如
int array={0,1,2};
int (*p)=array;
使用(*p1)和array都是第二个元素1;
int *p [数字]代表的是指针数组,就是如p里面放的元素是一个指针int*(就是一个int的地址),再解引用将会指向的是另外一个int。 1809228982 发表于 2019-1-15 11:12
就是两者所存储的数据分别是什么呢?
首先你得明白数组和指针的概念
数组在内存中是一段连续的空间,数据在其中依次储存,比如
int a;便是你在内存中申请了一段长度为(4x10=40)个字节的连续空间,用来储存整型变量。
而像a=3这种访问的方法,便是访问数组的首地址偏移(4x4=16)个字节的那个整数;
而指针也是一种数据类型,和int,char一样
不同只是它存储的是一个地址,
不管是整形指针,浮点指针,还是什么乱七八糟的指针,都是统一的,它说储存的都是长度4个或8个字节(根据32位还是64位的不同)的地址;
所以问题就很明确了
数组指针里存储的数据是一个地址,
而指针数组是一段连续的数据,里面依次储存了多个地址 Croper 发表于 2019-1-15 15:42
首先你得明白数组和指针的概念
数组在内存中是一段连续的空间,数据在其中依次储存,比如
int a; ...
谢谢 行客 发表于 2019-1-15 11:20
int(*p) [数字]是数组指针,指向的是数组首地址,代表的是数组。所以你可以使用(*p)来替代数组的表示 ...
感谢
页:
[1]