C语言程序题
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上运行通过.
问:C语言(不是C++)能写窗口程序(像软件那样)的程序吗?
答:能,累死你,简单的一个比方,你把成熟语言库里的一个经常用的函数重新编写一遍,你就体验到味道了详情>>