正在加载图片...
·238 C语言程序设计上机指导与同步训练 2.二维数组的地址问题 inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12} (1)a—表示数组的首地址;等价于*(a+0)、*a (2)a[i]一表示数组的第i行的行地址,即第i行第一个元素的地址; 等价于*(a+i)、*( (3)&a[i[j]一表示数组的第i行j列元素的地址;等价于*(a+i)+j 和*(p+i)+j (4)a[i[j}一表示数组的第i行j列元素;等价于*(*a+i)+j) 和*(气(p+i)+j) 3.指向二维数组的行指针 inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; t(*p)4]=a (1)int(*p)4]=a 表示p是一个指向二维数组(一行有四个元素的)行地址的行指针 (2)p+1;行指针加1,是加一行元素的字节数的和 p=p+1;行指针从当前行指向下一行; 基础训练(A 、选择题 1.已知nta3][4]*p=a则p表示() A)数组a的0行0列元素 B)数组a的0行0的地址 C)数组a的0行首地址 D)以上均不对 2.已知nta[34]*p;若要指针变量p指向a[oJ,正确的表示方法是() A)p= C)p=* D)P=a[0J[] 3.已知: double b2[3]*p=b;下面哪个不能表示数组b的0行0列元素 A)bloOr B)p C)*plO D)p 4.设有说明int*ptr)[M其中的标识符ptr是() A)M个指向整型变量的指针 B)指向M个整型变量的函数指针 C)一个指向M个整型元素的一维数组的指针 D)具有M个指针元素的一维指针数组,每个元素都只能指向整型变量 、填空题 1.已知:下面程序段中第一个pinf语句的输出是200,则第二个 printf语句的输出 第三个 printf语句输出是 inta[3][4],*p=a; printf("gd",a) printf("旨d",p) 238·238· C 语言程序设计上机指导与同步训练 ·238· 2. 二维数组的地址问题 int a [3][4] = { 1,2 ,3,4,5,6,7,8,9,10,11,12} ; int * p = a ; (1) a—表示数组的首地址 ; 等价于 *( a + 0 ) 、* a (2) a [ i ] —表示数组的第 i 行的行地址,即 第 i 行第一个元素的地址; 等价于 *( a + i ) 、* ( p + i ); (3) &a [ i ][ j ] —表示数组的第 i 行 j 列元素的地址; 等价于 *( a + i ) +j 和 *( p + i ) +j; (4) a [ i ][ j ]—表示数组的第 i 行 j 列元素;等价于 * ( *( a + i ) +j ) ; 和 * ( *( p + i ) +j ) ; 3. 指向二维数组的行指针 int a [3][4] = { 1,2 ,3,4,5,6,7,8,9,10,11,12} ; int ( * p )[4 ] = a ; (1) int ( * p )[4 ] = a ; 表示 p 是一个指向二维数组(一行有四个元素的)行地址的行指针; (2) p + 1 ; 行指针加 1 ,是加 一行元素的字节数的和; p = p + 1 ; 行指针从当前行指向下一行; 基础训练(A) 一、选择题 1. 已知:int a[3][4],*p=a;则 p 表示 ( )。 A) 数组 a 的 0 行 0 列元素 B) 数组 a 的 0 行 0 的地址 C) 数组 a 的 0 行首地址 D) 以上均不对 2. 已知:int a[3][4],*p;若要指针变量 p 指向 a[0][0],正确的表示方法是 ( )。 A) p=a B) p=*a C) p=**a D) p=a[0][0] 3. 已知:double b[2][3],*p=b;下面哪个不能表示数组 b 的 0 行 0 列元素 ( )。 A) b[0][0] B) **p C) *p[0] D) *p 4. 设有说明 int (*ptr)[M];其中的标识符 ptr 是 ( )。 A) M 个指向整型变量的指针 B) 指向 M 个整型变量的函数指针 C) 一个指向 M 个整型元素的一维数组的指针 D) 具有 M 个指针元素的一维指针数组,每个元素都只能指向整型变量 二、填空题 1. 已知:下面程序段中第一个 printf 语句的输出是 200,则第二个 printf 语句的输出 是 ,第三个 printf 语句输出是 。 int a[3][4],*p=a; printf("%d",a); printf("%d",p);
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有