主题:[讨论][请教] 请教一下
knate
[专家分:570] 发布于 2007-04-12 11:11:00
for(x=0,p=&a[0][0];x<N;x++)
{
for(y=0;y<N;y++,p++)
printf("%-4d",*p);
printf("\n");
}
这个为什么不能输出数组!!
只能输出1行!!
回复列表 (共6个回复)
板凳
knate [专家分:570] 发布于 2007-04-13 18:03:00
哦
这个知道,
但想知道我那个是哪里错了!!
xx
3 楼
233355750 [专家分:60] 发布于 2007-04-13 18:44:00
二维数组可以想像成二维表格,每一行的首地址不确定。
所以每行首地址都要付个p
p=a[0][0];p++
p=a[1][0];p++
...
...
4 楼
233355750 [专家分:60] 发布于 2007-04-13 19:01:00
for(x=0;x<M;x++)
{p=a[x];
for(y=0;y<N;y++,p++)
printf("%-4d",*p);
printf("\n");
}
这样就可以,我也不知道了。把p=a[x]放到上边就不可了。
我用的是borland c++ 5.5命令行编译器。
5 楼
halikes23 [专家分:70] 发布于 2007-04-14 07:14:00
2维数组不用指针是不能只用一个FOR来表示出来的
不用指针的方法就是用一个1维数组做中介
6 楼
knate [专家分:570] 发布于 2007-04-15 02:19:00
/* Note:Your choice is C IDE */
#include "stdio.h"
#define N 5
main()
{
int a[N][N];
int x,y;
int *p;
int sum;
for(x=0,sum=1;x<N;x++)
{
for(y=0;y<N;y++,sum++)
a[x][y]=sum;
}
for(x=0,p=&a[0][0];x<N;x++)
{
for(y=0;y<N;y++,p++)
printf("%-4d",*p);
printf("\n");
}
}
检测程序现在又正常了,郁闷!!
不知道原来什么原因出错了!
我用的是tc for windows!
(用tc for windows试验的了,
原来用单片机汇编,现在想用c编程序,汇编太繁了)
顺带问一下,有什么好的c编辑器,最好能够单步调试的,好查什么原因(汇编的习惯)
回应一下3楼和5楼的!
数组是在内存连续开辟空间的,不是分开的.
我实际也是用2次循环,可能你没注意尔尔!!
我来回复