全部问题 > 当前问题

二维数组定义时 char *p[2] 是什么意思

有以下程序

#include <stdio.h>
main()
{ char c[2][5]={"6938","8254" }, *p[2];
int i, j, s=0;
for( i=0; i<2; i++ ) p[i]=c[i];
for( i=0; i<2; i++ )
for( j=0; p[i][j]>0 ; j+=2 ) s=10*s+p[i][j]-'0';
printf("%d\n",s);
}
程序运行后的输出结果是

A) 6938

B) 9824

C) 4528

D) 6385


在这道题里面根据p[i][j]可以知道p就是个二维数组

定义时*p[2] 我觉得应该是定义了一个列数为2的二维数组且p指向第一行的首地址

那么这个数组每一行不是应该只能存放2个字符吗 为什么这里还是将c数组的4个字符赋给了*p数组 是题错误还是我理解错误 求解

1 2016-3-25 16:42:23

共 3 个回答

最佳答案

对面 2016-3-25 17:19:16

*p[2]是两个元素的指针数组,指向c数组的第一行和第二行,,,不是赋值T~~t

1 2016-3-25 17:21:00

回复 对面:原来如此 我就说我怎么感觉怪怪的 哈哈

对面 2016-3-25 17:21:51

回复 1:嗯嗯T~~t