C语言数组问题~~求高手【【详解】】~~~多谢~!

1.#include <stdio.h> main() {int a[5]={2,4,6,8,10},*p.**k; p=a; k=&p; printf("%d",*(p++)); printf("%d\n",++k); } 程序输出结果是_____ 2.#include <stdio.h> #define N 6 main() { char c[N]; int i=0; for(i=0;i<N;i++) c[i]=getchar(); for(i=0;i<N;i++) putchar(c[i]); } 当运行以上程序时输入三行,每行都是在第一列上开始,<CR>代表Enter键: a<CR> b<CR> cdef<CR> 则程序的输出结果是 A.abcdef B.a C.a D.a b b b c cd cdef d e f 3.若有定义:int c[4][5],(*cp)[5];和语句cp=c;则能正确引用c数组元素的是 A.cp+1 B.*(cp+3) C.*(cp+1)+3 D.*(*cp+2) 偶知道程序题讲起来有点麻烦,还是求高手简单点播下~~

第1个回答  2019-09-25
1、
printf("%d",*(p++));
语句输出的是2
printf("%d\n",++k);
语句输出的是
p指针的地址+sizeof(int)
2、答案是C
当输入完三行时,c[N]里的数据分别是:{a,<CR>,b,<CR>,c,d}6个数据。
3、答案是D。(*cp)[5]是指向数组的指针,意思是这个数组有5个数据都是指针,cp=c后这5个指针分别存放二维数组c[4][5]的每行的首地址的指针。所以cp是指针的指针。*cp是指针指向c[0][0],*cp+2是指针偏移
指向c[0][2],*(*cp+2)是c[0][2]的值,所以只有它能引用数组的元素。