深入理解C语言数组

深入学习C语言数组


阅读目录:

1、多角度理解数组

2、数组中几个关键符号

3、从内存角度理解指针访问数组的实质

4、指针与数组的类型匹配问题


1、多角度理解数组:

1.1、从内存角度理解数组

(1)从内存角度讲,数组变量就是一次分配多个变量,而且这多个变量在内存中的存储单元是依次相连接的。

(2)我们分开定义多个变量(譬如int a, b, c, d;)和一次定义一个数组(int a[4]);这两种定义方法相同点是都定义了4个int型变量,而且这4个变量都是独立的单个使用的;不同点是单独定义时a、b、c、d在内存中的地址不一定相连,但是定义成数组后,数组中的4个元素地址肯定是依次相连的。

(3)数组中多个变量虽然必须单独访问,但是因为他们的地址彼此相连,因此很适合用指针来操作,因此数组和指针天生就叫纠结在一起

int a, b, c, d;     // 分开独立定义4个int型变量
int a[4];           // 一次定义一个数组,包含4个int型变量

// 注意数组和指针在初始化时的式子,和平时赋值有不同。
int a[10] = {
  1, 3, 4, 0};       // 定义同时初始化
int *p = &a;                    // 定义同时初始化


a[0] = 4;
a[1] = 44;
a = {
  1, 4, 5, 32};  // 错误的,数组元素必须单个访问,不能整个数组来访问

1.2、从编译器角度来理解数组

(1)从编译器角度来讲,数组变量也是变量,和普通变量和指针变量并没有本质不同。变量的本质就是一个地址,这个地址在编译器中决定具体数值,具体数值和变量名绑定,变量类型决定这个地址的延续长度(整形4字节、字符型1字节)。

(2)搞清楚:变量、变量名、变量类型的具体含义


2、数组中几个关键符号(a a[0] &a &a[0]):

这4个符号搞清楚了,数组相关的很多问题都有答案了。理解这些符号的时候要和左值右值结合起来,也就是搞清楚每个符号分别做左值和右值时的不同含义。

int a[5] = {<
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值