以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- 荤菜求助:指向二维数组的指针问题3 (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=47234) |
-- 作者:荤菜 -- 发布时间:5/20/2007 9:35:00 PM -- 荤菜求助:指向二维数组的指针问题3 /*输出score中12个数*/ main() { void search(); static int score[3][4]={{65,57,70,60},{58,87,90,81},{90,99,100,98}}; search(score,3); getch(); } void search(x,n) int *x; /*我不明白为什么这一行改成(*x)[4]结果就正确了.我不想用这个,只想用score的首地址x*/ int n; {int i,j; for(i=0;i<n;i++) for(j=0;j<4;j++) printf("%4d",*(*(x+i)+j));/*错误:无效间接运算在 search 函数中*/ getch(); } |
-- 作者:一分之千 -- 发布时间:5/21/2007 11:04:00 AM -- 这个就涉及到二维数组了,*x只是一维,而你要输出的是二维数组 |
-- 作者:荤菜 -- 发布时间:5/21/2007 10:14:00 PM -- 谢谢 |
-- 作者:lixiaoting -- 发布时间:7/29/2007 2:12:00 PM -- 二维数组的定义和调用。 二维数组指针定义有2种:1.行指针 例如int *x;x=a[0];2.元素指针:例如:int (*p)[4];p=a 在这个题目里面你的调用方式为*(*(p+i)+j)这种是元素指针的调用,你用行指针就不对了。 #include<stdio.h> main() { void search(int s[3][4],int n); static int score[3][4]={{65,57,70,60},{58,87,90,81},{90,99,100,98}}; search(score,3); } void search(int s[3][4],int n) { int i,j,(*p)[4]; p=s; for(i=0;i<n;i++) for(j=0;j<4;j++) printf("%4d",*(*(p+i)+j)); } 或者改为行指针: #include<stdio.h> main() { void search(int s[3][4],int n); static int score[3][4]={{65,57,70,60},{58,87,90,81},{90,99,100,98}}; search(score,12); } void search(int s[3][4],int n) { int i,j,*p; p=s[0]; for(i=0;i<12;i++) printf("%4d",p[i]); } 在计算机中,二维数组的存放方式和一维数组是一样的。 |
-- 作者:NingBo -- 发布时间:8/16/2007 3:41:00 PM -- lixiaoting 回答的是正解 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
62.500ms |