C语言数组基础知识讲解(3)

2020-12-16 10:13

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 编译运行的输出为:


C语言数组基础知识讲解(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:冀教版四年级英语下册Unit 3 Lesson 18 Maddy the Monster习题【

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: