C专家编程-数组和指针并不相同
2014-11-07 14:28
183 查看
1 数组并非指针
extern int *x;extern int y[];
第一条语句声明x是个int型的指针;第二条语句声明y是个int型数组,长度尚未确定(不完整的类型),其存储在别处定义。
file1:
int mango[100];
file2:
extern int *mango; // 程序无法运行
更改为 extern int mango[]; //OK,声明与定义匹配
2 声明与定义
定义是一种特殊的声明,它创建了一个对象并分配了内存;声明简单地说明了在其他地方创建的对象的名字,它允许你使用这个名字。即 int mango[100]; 为定义;extern int mango[]; 为声明。
3 数组和指针如何访问
数组名用于确定对象在内存中的位置,也是左值,但它不能作为赋值的对象。因此,数组名是个左值但不是可修改的左值。编译器为每个变量分配一个地址(左值)。这个地址在编译时可知,而且该变量在运行时一直保存于这个地址。相反,存储于变量中的值(它的右值)只有在运行时才可知。如果需要用到变量中存储的值,编译器就发出指令从指定地址读入变量值并将它存于寄存器中。
下图A展示数组的下标引用过程;图B展示对指针的引用过程;图C展示对指针进行下标引用的过程。
相关文章推荐
- 【C专家编程】第4章 数组和指针并不相同
- C专家编程 九 什么时候数组与指针相同(一)
- C专家编程——令人震惊的事实:数组和指针并不相同
- C专家编程——第四章:数组与指针并不相同
- 令人震惊的事实:数组和指针并不相同——C专家编程
- 数组和指针 [C专家编程]
- C专家编程之为什么C语言把数组形參当做指针:数组/指针实參
- C专家编程--指针和数组(四) 指针对数组的访问
- C专家编程学习之第四章 数组和指针
- C专家编程--指针与数组(二) 数组 指针 联系
- C语言指针与数组(C专家编程)
- 玩转数组 指针参数之c专家编程第九章
- C专家编程 十三 数组和指针参数是如何被编译器修改的
- 指针和数组(C专家编程笔记)
- C专家编程之为什么C语言把数组形参当做指针:数组/指针实参
- C 专家编程笔记(三) 数组和指针
- C专家编程--数组和指针如何被编译器修改的
- C专家编程--数组与指针(一)数组 指针 访问方式 区别
- C专家编程 十 规则2: C语言把数组下标作为指针的偏移量(二)
- C专家编程 十五 使用指针向函数传递一个多维数组