main(){char ch[3][4]={"123","456","78"},*p[3];int i;for(i=0;i<3;i++) p[i]=ch[i];for(i=0,i<3;i++) printf("%s",p[i]);}请大家详细的教教我这样的题怎么做,谢谢大家。

热心网友

char ch[3][4]={"123","456","78"}, 表示定义一个2维数组,3行4列,并对其进行付初值。 "123" ==第一行,1=第一列,2==第二列,3==第三列,'\0'==第四列 "456" ==第二行 4=第一列,5=第二列,6=第三列,'\0'=第四列 "78" ==第三行 7=第一列,8=第二列,'\0'=第三列,第四列值由编译器决定,一般为0其结果是: ch[0][0]=1,ch[0][1]=2,ch[0][2]=3, ch[0][3]='\0' ch[1][0]=4,ch[1][1]=5,ch[1][2]=6, ch[1][3]='\0' ch[2][0]=7,ch[2][1]=8,ch[2][2]=='\0',ch[1][3]='编译时决定'char *p[3],指定义一个一维字符串指针数组(从左向右看,首先是一个指针*p,然后又是是个数组[3])for(i=0;i<3;i++) p[i]=ch[i];这句话是将指针p[i]指向第i行数据,ch[i]表示第i行的行数据首址,在数字上=&ch[i][0],一个静态数据,编译时决定。for(i=0,i<3;i++) printf("%s",p[i]);表示连续输出3个字符串指针所指的内容。%s表示输出对应字符串内容,遇到"\0"表示输出结束('\0'本身不输出)。输出内容当然是:12345678 ^_^。

热心网友

char ch[3][4]={"123","456","78"},这一句的结果是:ch[0][0]=1,ch[0][1]=2,ch[0][2]=3, ch[0][3]="\0"按照顺序赋值,其他的没有赋值的全部默认成0或者空.for(i=0;i<3;i++) p[i]=ch[i];着句话是将p[i]的指针头指向ch[i][0]即指向数组的行的第一个元素,for(i=0,i<3;i++) printf("%s",p[i]);着一行是打印出字符串,只要遇到改行数组的"\0"结束.结果是:12345678

热心网友

结果是:12345678

热心网友

现在谁还学这些过时的东西,DOS下的编程方法,还有什么用?

热心网友

char ch[3][4]={"123","456","78"},这一句的结果是:ch[0][0]=1,ch[0][1]=2,ch[0][2]=3, ch[0][3]="\0"按照顺序赋值,其他的没有赋值的全部默认成0或者空.for(i=0;i<3;i++) p[i]=ch[i];着句话是将p[i]的指针头指向ch[i][0]即指向数组的行的第一个元素,for(i=0,i<3;i++) printf("%s",p[i]);着一行是打印出字符串,只要遇到改行数组的"\0"结束.结果是:12345678我在turbo c2.0上运行通过.