C语言数组基础知识讲解
从中可以看出两点:
A. 如果指派初始值后面还有值,则后面的值会被用于初始化后续的元素。上例中, iarr[3] 被初始化为 1 ,它后续的元素iarr[4] 被初始化为 5。
B. 如果初始化列表中多次出现对某元素的初始化,则以最后一次为准。上例中, iarr[1] 先被初始化为 3,然后被 [1] = 8 指派初始化为 8。
4. 给数组元素赋值
我们可以利用下标给特定的元素赋值。例如:
intiarr[5];
iarr[0] = 100; /* 赋值给第一个元素 */
iarr[4] = 120; /* 赋值给第五个元素 */
iarr[2] = 180; /* 赋值给第三个元素 */
C 不允许直接使用数组对别的数组进行赋值,也不允许使用初始化列表对数组进行赋值。例如:
int iarr_1[5] = { 1, 2, 3, 4, 5 }; /* 正确 */
int iarr_2[5];
iarr_2 = iarr_1; /* 错误! */
iarr_2[5] = { 3, 4, 5, 6, 7 }; /* 错误! */
iarr_2[5] = iarr_1[5]; /* 越界! */
最后一个语句发生了越界!因为这两个数组都只有 5 个元素,而使用下标 5 访问的是第六个元素!
5. 数组界限(array bounds)
使用下标时,我们必须确保下标没有越界。例如:
intiarr[46];
这个数组的下标范围是 0 到 45,确保下标没有超出这个范围是我们的责任,因为编译器不会对下标越界进行检测!
C 标准没有定义下标越界的后果,也就是说,当我们写的程序中出现下标越界的问题,程序可能正常工作,也可能异常退出,还有可能出现其它奇怪的情况。
#include <stdio.h>
int main(void)
{
int var_1 = 20;
intarr[5];
int var_2 = 40;
printf("var_1: %d, var_2: %d ", var_1, var_2);
arr[-1] = -1;
arr[5] = 5;
printf("%d %d ", arr[-1], arr[5]);
printf("var_1: %d, var_2: %d ", var_1, var_2);
return 0;
}
上述程序使用Dev-C++ 4.9.9.2 编译运行的输出为:
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库C语言数组基础知识讲解(3)在线全文阅读。
相关推荐: