数组在内存中连续排列
1 数组是可以在内存中连续存储多个元素的结构,数组中的
所有元素必须属于相同的数据类型
? 一维数组声明的基本格式为:
? 类型 数组名[数组元素个数];
? 比如,声明语句:
? double sz[6];
告诉编译器3条信息:数组名是sz,存放的元素是double型,数组存放的元素个数为6,这样,便可以对数组及数组元素进行读写访问。
要防止下标越界的错误发生,对上面声明的数组sz来说,有效的下标是0到5,在程序中如果出现了sz[6],编译器有时并不会报错,但这可能引起程序的崩溃。
sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。
sizeof(类型说明符,数组名或表达式);
或sizeof 变量名
因此sizeof(a);则求得 结果为20 。因为一个元素占4个字节,数组a有5个元素,则占有5*4=20个字节
sizeof(int) ;//求得int 类型所占的字节数
printf("\n%x",a); //打印出数组a的地址
分别打印出数组a中的元素的值和地址:
运行结果:
? * 一维数组也称向量,用以组织具有一维顺序关系的一组同类型数据,在使用数组前,必须先声明数组,编译器根据声明语句为其分配内存,这样数组才有意义。
? * 要在内存中开辟一块连续内存给数组用,需要考虑以下问题,一是在哪里开辟,而是开辟多大的地方,C语言中,这都是由编译器自动完成的 ,编程人员说要做的是“提要求”,即所开辟的数组应能盛放多少个元素,每个元素是什么类型,另外,编程人员还要指定数组名。
2 定义一个数组a,有10个元素
如果越界访问,程序则会崩溃
3 数组定义的形式:
size必须是常量表达式
(1)通过 #define N 20 ,下面的代码是合法的。
如果 printf("%d",&N); //编译器放在常量区,没有地址,无从修改
(2)通过const int num=10; 然后定义数组b[num] 这样的
代码是不合法的
num 在内存中有实体,是可变动数。
4、数组初始化,系统在栈区自动分配一段连续的内存给数组元素
不足的数填充0.
5、数组的其他初始化情况:
原文地址:https://www.cnblogs.com/xingkongcanghai/p/10411388.html