码迷,mamicode.com
首页 > 编程语言 > 详细

第五章 2 数组

时间:2019-02-21 12:55:01      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:sizeof   const   系统   表达式   变量   声明   相同   下标越界   int   

技术图片
技术图片
数组在内存中连续排列

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、数组的其他初始化情况:

技术图片

第五章 2 数组

标签:sizeof   const   系统   表达式   变量   声明   相同   下标越界   int   

原文地址:https://www.cnblogs.com/xingkongcanghai/p/10411388.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!