目录: 标题| 题干| 答案| 搜索| 相关
问题

有下列程序main(){ int a[5]={2,4,6,8,10},*p,


有下列程序main(){ int a[5]={2,4,6,8,10},*p,**k; p=a; k=&p; printf("%d",*(p++)); printf("%d\n",**k);}运行该程序,其输出结果是A.4 B.22C.24 D.46

  • A4
  • B22
  • C24
  • D46
参考答案
参考解析:

在本题中,程序首先定义了一个一维数组a,赋其初值,并定义一个同类型的指针变量p和一个指向指针的指针变量k,然后让指针变量p指向数组的首地址,接着将指针变量p的地址值赋给指向指针的指针变量k。在第一条输出语句中,首先我们需要弄清楚*(p++)的作用,它是先调用指针变量p的值,然后使其自加,输出效果等价于*p,因此,最后输出的结果是数组中的第一个元素。在第二条输出语句中,我们需要弄明白**k的作用,指向指针的指针变量类似于指针变量,如果用**k表示一个数值,可以确定这条输出语句的输出结果是一个数值,而非地址,从表达式k=&p可以看出,k的值是指针变量p的地址值,p的值改变后,k能实时得到改变,那么在第一条输出语句对p的改变,在第二条输出语句中得到了体现。因此,**k输出的是数组中的第二个元素,即4。综合上面的分析,可以知道程序最终的输出结果是24。

分类:其他
相关推荐

1、以下程序 int aa[3][3]={{2},{4},{6}}; main(

以下程序 int aa[3][3]={{2},{4},{6}}; main() { int i,*p=&aa[0][0]; for(i=0;i<2;i++){ if(i==0)aa[i][i+1]=*p+1; else ++p; printf("%d",*p); } } 的输出是______。A23B26C33D36

2、有以下程序段 main() { int a=5,*b,**c; c=&

有以下程序段 main() { int a=5,*b,**c; c=&b;&a; } 程序在执行了“C=&b;b=&a;”语句后,表达式“**c”的值是A变量a的地址B变量b中的值C变量a中的值D变量b的地址

3、有以下程序段: main() { int a=5, *b, **c; c=&

有以下程序段: main() { int a=5, *b, **c; c=&b; b=&a; } 程序在执行了c=&b; b=&a; 语句后,表达式**c的值是______。A变量a的地址B变量b中的值C变量a中的值D变量b的地址

4、有如下程序main(){ int a=2,b=-1,c=2;if(a

有如下程序main(){ int a=2,b=-1,c=2;if(a A0B1C2D3

5、有如下程序 main() { int n[5]={0,0,0},i,k=2

有如下程序main(){int n[5]={0,0,0},i,k=2;for(i=0;iA不确定的值B2C1D0

6、有以下程序 main() { int m[][3]={1,4,7,2,5,

有以下程序main(){int m[][3]={1,4,7,2,5,8,3,6,9};int i,j,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}执行后输出结果是()A456B258C369D789