鱼C论坛

 找回密码
 立即注册
查看: 2062|回复: 0

[技术交流] 新手对指针,变量还有数组的个人理解

[复制链接]
发表于 2017-10-20 20:59:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

11

a+1和*a+1这些也就明白了.
新手学习十天,看了Tzdner_C的帖子后,加上自己的理解,有错误请指正.
参考原帖地址:http://bbs.fishc.com/thread-17978-1-1.html[/url]
笔记地址:15pb基础班
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 03:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表