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