02-指针和数组

《C语言深度解剖》第四章笔记

1、

在32位系统下,不管什么样的指针类型,其大小都是四字节。

int *p;

这个语句的理解:一个 "int * " 的模子在内存上“预定”4字节的空间,然后把这四字节的空间命名为p。且这4字节的空间里面只能存某个内存地址(即使存入别的数据,也会被当作地址处理)。

2、

int a[5];

sizeof(a)的值是20,sizeof(a[0])的值是4.

sizeof(&a)是取a的首地址,是4,即sizeof(&a[0])

3.

int *p1[10];
int (*p2)[10];

指针数组:是数组,数组里的元素都是指针,又名“存储指针的数组”

数组指针:是指针,指向一个数组,32位系统下永远都是4字节。

分析:

  • “[ ]” 的优先级要高于“ * ”,p1先与“ [ ] ”结合,构成一个数组的定义(数组名叫p1),int * 修饰的是数组的内容,即数组的每个元素,所以,第一句是:这是一个数组,包含10个指向int的指针。
  • (*p2)是指针定义,p2是指针变量名,int 修饰的是数组的内容。p2是指针,指向一个包含10个int 类型的数组

猜你喜欢

转载自blog.csdn.net/qq_39883358/article/details/84702743
今日推荐