C语言:这道小题书上的解释没看懂,帮我看看说的是啥意思???跪谢!~跪谢~

来源:百度知道 编辑:UC知道 时间:2024/05/13 11:04:48
#include<stdio.h>
main()
{
int i=0;
char a[3][4]={"\0"},(*p)[4];

printf("Input 3 string:\n");
for(p=a;p<a+3;p++)gets(p[0]);
printf("Ouput 3 string:\n");
for(i=0;i<3;i++)puts(a[i]);
}

书上写的:当指针指向二维数组时,p[0]代表该数组第1行的首地址,所以,可通过gets(p[0])为数组的第1行输入字符串;

我不明白的是这样的话输入的永远第1行首地址那的元素,怎么可能给第1行都赋值呢?循环后面的p++是用来指向下一行的,又不是指向下一个元素的啊?

求解~跪谢~

怎么会是下一行呢?p++就是是指向下一个元素!p++指的顺序是p[0][0],p[0][1],p[0][2],p[1][0],p[1][1]...p[2][0]...p[2][3],明白了吗?

是gets(),每次读一行啊
我觉得这个程序有问题,输出应该会与预期不一致……
不要乱讲,++与数据类型有关

一楼说的对 p++指的顺序是p[0][0],p[0][1],p[0][2],p[1][0],p[1][1]...p[2][0]...p[2][3]
而p[0]p[1]p[2]是指的一维数组,一行