正在加载图片...
6.1一个数组中的元素可以有多少种不同的类型? 答:只有一种。一个数组中的所有元素都是同类型的 6.2数组下标可以有哪些类型? 答:数组下标必须是整数类型 6.3在定义一个数组的同时初始化它,但初始化列表中的值少于数组元素的个数。其余 元素的值将是什么? 答:初始化列表中的值将赋值给数组前面的元素,其余元素的初值为0。 6.4当数组初始化列表中的值的个数多于数组元素的个数,将会发生什么现象? 答:将会出错。 6.5为什么必须知道“C的数组是按行序为主序存储”的? 答:因为当需要按某种顺序访问数组元素时,例如初始化数组,通过移动指针连续访问 数组等等操作都与C的存储方式有关。 6.6多维数组的多个下标必须分别出现在各自的方括号对内。那么,在什么条件下,下 列代码段可以通过编译而不会产生出错或警告信息: inta[5][10]; b=a[2,4] 答:表达式 b=a[2,4]; 等价于下面这个表达式 b=a[4] 在这里,a[4]是一个类型为int型的常量指针。因此,只要b是一个类型为in*的指针, 该段代码就不会存错。但如果将b=a[2,4]改为 将出错。因为a[5]不存在 6.7表达式a[计+j和i+j[a]是否相等? 答:不妨设i=2,j=3 如果a是二维数组,则a[+j就是a[5],它代表数组a第5行首元素的地址,即a[5] &a[5][0]。表达式i+j[a]即2+3[a],也就是a[3]+2,它代表数组a第三行第二列元素 的地址,即a[3]-+2==&a[3][2]。显然两者不相等 如果a是一维数组,由i=2,j=3代入a[计+j得a[5],它表示a的第5个元素。 而表达式计+j[a]转换为指针表示是i+*(a+j),它等价于i+a[j,即a[3]+2,它表示将a[3] 的值加上2。可见,a[i+j不等于ij[a] 6.8设有定义 int array [3][4] 请给出下面每个表达式的值。假定数组起始位置为100, sizeof(int)==2 (2)array+2 (3)array [2] (4) array[2]-1 (5)& array[1]2] (6)& array[2][0] 答:(1)1000 2)10161 6.1 一个数组中的元素可以有多少种不同的类型? 答:只有一种。一个数组中的所有元素都是同类型的。 6.2 数组下标可以有哪些类型? 答:数组下标必须是整数类型。 6.3 在定义一个数组的同时初始化它,但初始化列表中的值少于数组元素的个数。其余 元素的值将是什么? 答:初始化列表中的值将赋值给数组前面的元素,其余元素的初值为 0。 6.4 当数组初始化列表中的值的个数多于数组元素的个数,将会发生什么现象? 答:将会出错。 6.5 为什么必须知道“C 的数组是按行序为主序存储”的? 答:因为当需要按某种顺序访问数组元素时,例如初始化数组,通过移动指针连续访问 数组等等操作都与 C 的存储方式有关。 6.6 多维数组的多个下标必须分别出现在各自的方括号对内。那么,在什么条件下,下 列代码段可以通过编译而不会产生出错或警告信息: int a[5][10]; …… b = a[2,4]; 答:表达式 b = a[2,4]; 等价于下面这个表达式: b = a[4]; 在这里,a[4]是一个类型为 int 型的常量指针。因此,只要 b 是一个类型为 int*的指针, 该段代码就不会存错。但如果将 b = a[2,4]改为 b = a[2,5] 将出错。因为 a[5]不存在。 6.7 表达式 a[i+j]和 i+j[a]是否相等? 答:不妨设 i = 2,j = 3。 如果 a 是二维数组,则 a[i+j]就是 a[5],它代表数组 a 第 5 行首元素的地址,即 a[5] == &a[5][0]。表达式 i+j[a]即 2+3[a],也就是 a[3]+2,它代表数组 a 第三行第二列元素 的地址, 即 a[3]+2 == &a[3][2]。显然两者不相等。 如果 a 是一维数组,由 i == 2,j == 3 代入 a[i+j] 得 a[5],它表示 a 的第 5 个元素。 而表达式 i+j[a]转换为指针表示是 i+*(a+j),它等价于 i+a[j],即 a[3]+2,它表示将 a[3] 的值加上 2。可见,a[i+j]不等于 i+j[a]。 6.8 设有定义 int array[3][4]; 请给出下面每个表达式的值。假定数组起始位置为 1000,sizeof(int) == 2。 (1) array (2) array+2 (3) array[2] (4) array[2]-1 (5) &array[1][2] (6) &array[2][0] 答:(1) 1000 (2) 1016
向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有