|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1.int*类型和int型
int*也是一种类型,类似于int型,叫指针,指向的是int型数据,把int*和int理解为两种不同的类型.
所有有名字的都可以理解为是一个变量, int n=10,n是变量, 这个变量包含两层意思,第一个是他的内容10(类型是int),即值,第二个是他的名字n(即在内存中的地址).即址,
*表示取值, 但是只对指针变量有效(重要) &表示取地址.
int* n 中的n表示的也是两层意思.第一个是他的内容(类型为int*型,即指针),第二个是他的名字n(即在内从中的地址);
2.数组
数组int a[10], 把名字提取出来,就是 int[10] 和 a ; [10]前面的int 就代表存储了10个int型数据, a是他的名字,所有数组的名字可以理解为就是一个指针变量。他指向的是这个数组的 首地址。即第一个元素的地址。
3. 指针数组
int* p[10 ],先把名字提取出来,就变成了int*[10]和p 她的名字是p, 可以理解为变量,所有这种数组,只要名字旁边没有*,就是一个数组, int*[10 ]就是里面存储了10个int*类型的数据,然后再拆 解int*,即每个int*数据指向一个int型数据.
4.数组指针
int (*p)[10],先把名字提取出来,因为有括号,提取出来就是(*p)和 int [10], int[10]就是一个存储了10个int型数据的数组, *p就是对p取值,那两个结合起来就是,对p取值后,即p里面存储的内容 是int[10],即p指向int[10].什么可以被取值,前面说过是指针,所以p就是一个指针,这就是数组指针,.
5.指针数组指针
int*(*p)[ 10],可以先把名字提取出来,因为有()就是p和括号里面的内容一起的(括号可以理解为一个盒子), 提取出来就是 (*p)和 int*[10]. int*[10]就是一个存储了10个int*类型的数组,就是指针数组 (*p)前面说过了,p就是一个指针.那他应该是,(指针数组)指针.
6.指针和二维数组.
int a[3][4];
int (*p)[4];
int a[3][4]拆开就是a和int[3][4], 再提出来就是 [3]和int [4],其中[3]可以理解int [3][4]的名字([3]可以理解为b[3],).也就是说[3]里存储的内容是int [4],那*[3]=[4],那综合起来就是,a的内容是b[3], b[3]的内容是int[4];就是*a=[3], *[3]=[4],
p的内容是[3],也就是*p=[3],上边分析了,*a=[3],那也就是说p=a.;
int a[3][4]---------->int [3][4]--------->int [4]-------->int;
11
a+1和*a+1这些也就明白了.
新手学习十天,看了Tzdner_C的帖子后,加上自己的理解,有错误请指正.
参考原帖地址:http://bbs.fishc.com/thread-17978-1-1.html[/url]
笔记地址:15pb基础班 |
|