闪电猫网络 发表于 2017-10-20 20:59:49

新手对指针,变量还有数组的个人理解

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]
查看完整版本: 新手对指针,变量还有数组的个人理解