主题四 指针和数组(上)----22.数组基础
来源:互联网 发布:淘宝代理运营 编辑:程序博客网 时间:2024/06/02 01:04
数组
数组是相同类型的变量的有序集合。
Int a[5];
//代表一个包含5个int类型的数据
a代表数组的第一个元素的起始地址,每个元素都是int类型,
这20字节空间的名字为a,a[0],a[1]等都是a中的元素,而并非元素的名字,数组中的元素没有名字。
数组在一片连续的内存空间中存储元素
数组元素的个数可以显示或者隐式
Int a[5]={1,2};
Int b[]={1,2};
数组地址与数组名
数组名代表数组首元素的地址
数组的地址需要用取地址符&才能得到
首元素的地址值和数组的地址值相同
首元素的地址与数组的地址是两个概念
数组名的盲点
数组名可以看做一个常量指针,但是其本质上是两个概念
数组名“指向”的是内存中数组首元素的起始位置
在表达式中数组名只能作为右值使用
只有在以下场合中数组名不能看做常量指针
1.数组名作为sizeof操作符的参数
2.数组名作为&运算符的参数
C语言为什么不用这种方式复制数组?
Int a[5];
Int b[5];
A=b;
经典错误再现:
定义为指针,声明为数组
#include<stdio.h>//another file//char* p=”Hello word!”;extern char p[];int main(){ printf(“%s\n”,p); return 0;}//Output:乱码//数组p实际存储的是字符串”Hello word!”的地址,然后将其打印出来,肯定是错误的乱码//printf(“%s\n”,*((unsigned int *)p));
编译器处理指针和数组方式不同
指针:一次寻址操作,再做读取执行
数组:无寻址,直接读取执行
数组小结
数组是一片连续的内存空间
数组的地址和数组首元素的地址意义不同
数组名在大多数情况下被当成常量指针处理
数组名其实并不是指针,在外部声明不能混淆
概念的混淆是Bug的根源之一
阅读全文
0 0
- 主题四 指针和数组(上)----22.数组基础
- 主题四 指针和数组(上)----21.指针的基础
- 主题四 指针和数组(上)----24.数组与指针分析
- 主题四 指针和数组(下)----25.指针数组与数组指针分析
- 主题四 指针和数组(上)----23.C语言中的字符串
- 专题四-指针和数组(上)
- 主题四 指针和数组(下)----27.数组参数和指针参数
- 主题四 指针和数组(下)----26.多维数组与多维指针
- 主题四 指针和数组(下)----28.函数与指针分析
- 四、数组和指针
- C语言基础(四)指针 数组
- 指针和数组(上)
- 指针和数组基础
- C++ Primer(四)数组和指针
- (编程基础)指针和数组
- C语言学习记录(四):指针和数组(上)
- 4--指针和数组(上)
- java基础(四)方法和数组
- DNA Consensus String
- Log4Net使用详解(续)
- 谷歌开源MobileNets:在移动设备上高效运行的计算机视觉模型
- nodejs+redis应用
- 拿工资不仅仅是让你写代码的
- 主题四 指针和数组(上)----22.数组基础
- Maven详解之仓库------本地仓库、远程仓库
- 深度解密 python challenge第5关之【用 pickle 序列化 】
- 洛谷 P1012 拼数
- 实现二进制与十进制之间的相互转换
- Android Studio 获取发布版和测试版证书SHA1的两种方式
- 为什么要进行内存对齐以及对齐规则
- HTML5本地储存实现--简易数据库
- 如何使用三层框架开发 JDBC 连接 Mysql 数据库