欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

数组的注意点

程序员文章站 2022-08-05 22:44:39
1.数组的定义: 数组类型 数组名[长度];其中长度是必须大于0的整数 /* 在这句话中必须指定号数组的长度 切不可写成: Int a[i]; i=10; 而应该写成...
1.数组的定义:

数组类型 数组名[长度];其中长度是必须大于0的整数

/*

在这句话中必须指定号数组的长度

切不可写成:

Int a[i];

i=10;

而应该写成:

Int a[10];

也可以用宏定义和malloc函数来定义

宏定义的写法:

#define N 10

Int a[N];

*/

2.数组中每个元素的类型一致;

3.数组是一个有序的数组在内存中的存储是按顺序排列的,而且内存的地址是从小到大的;//内存的地址从小到大是因为CPU中只有累加器,而没有累减器的存在

4.数组名也就是数组第一元素的地址,也就是这个数组的首地址,当然也可以理解成数组名是一个地址常量;

5.已知一个数组(如int a[n]),在只知道数组名,不知道数组元素个数的情况下,如何算出数组中元素个数(即求出n的值)

答案:sizeof(a)/sizeof(a[0]);

/*前面的sizeof(a)是计算整个数组的长度,后面的sizeof(a[0])是计算数组中第一个元素的长度,因为数组中每个元素的类型一样,所以每个元素所占的内存长度也是一样的,而且数组是必定存在a[0]的*/

6.数据元素的初始化:

A.数组中初始化的元素数量不能超过所设定的长度;

B.数组如果初始化的元素数量不够所设定的长度,在后面!!自动补0;

C.int a[]={1,2,3,4,5};这样的语句时成立的,虽然没有给定长度,但是后面初始化的元素自动填充到内存中去,编译的时候也就得到了数组的长度;也就是编译器是根据数组初始化的元素个数来划分内存区域的;

7.C语言在编译时是不检查数组的下标越界的,但是在运行的过程中,内核会报“segmentation fault(core dumped)"段错误。//如果运行程序的过程中,操作了一块非法的内存区域,操作系统为了保护内存中数据的完整性,强行终止了程序的运行,并且报”段错误“,段错误发生的原因有数组的下标越界,或者指针未指向有效元素…