项d:!((a(22)以下程序运行后,输出结果是_________。
main()
{
char*d[]。{"ab","cde"};
printf("%x",d[1]);
}
a)cde b)字符c的ascii码值
c)字符c的地址 d)出错
答案:c
评析:指针数组中的每一个元素都相当于一个指针变量。一维指针数组的定义形式为:类型名+数组名[数组长度],在本题main函数中定义指针数组d,它有两个元素,其初值分别是"ab"、"cde"的首地址。db]的值为"cde"的首地址。%x是指以十六进制数形式输出整数。
(23)设有如下程序
#include
main()
{
int**k,*j,i=100;
j=&i; k=&j;
printf("%d\n",**k);
}
上述程序的输出结果是________。
a)运行错误 b) 100
c)i的地址 d)j的地址
答案:b
评析:j=&i,j的值就是i的地址,*j=100,将j的地址赋给k,这时*k=j,那么,**k=*j,而1=100,所以**k=100,最后的打印结果应当为100。
(24)设有以下语句,其中不是对a数组元素的正确引用的是:_______(其中o≤i<10)
int a=[10]={0,1,2,3,4,5,6,7,8,9,},*p=a;
a)a[p-a] b)(&a[i])
c)p[i] d)*(*(a+i))
答案:d
评析:观察程序可知,a实际上就是数组a的首地址,所以"+(a+i)"表示的就是数组a中的第i个元素的值,进而,我们可以知道+(t(a+i))必然不是对a数组元素的正确引用。
(25)以下程序运行后,输出结果为________。
main()
{
int a[2][3]={1,3,5,7,9,1 1},*s[2],**pp,*p;
s[0]=a[0],s[1]=a[1];
pp=s;
p=(int*)malloc(sizeof(int));
**pp=s[1][1];
p=*pp;
printf("%d\n",*p);
}
a)l b)7
c)9 d)1l
答案:c
评析:s是一个含有两个元素的指针数组,pp是一个指向指针变量的指针,s[o]是指向二维数组a行下标为0的元素的首地址,即a[0儿0]的地址,s[1]为a[1][0]的地址。pp的值为s[o]的地址。**pp=s[1][l]后,a[0][0]的值将被赋值为all][l]的值,执行p=*pp;后,p中将是s[0]的值,最后的输出语句将输出地址s[0]所指向的数据,即a[0][o]。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页
责任编辑:小草