二维数组赋值问题

夏天__ 2012-10-12 01:27:00

#include<stdio.h>
#include<stdlib.h>

int main()
{
int a[3][4]={0};
int i=0,j=0;
int *p;
for(p=a[j]; j<3; j++)
{
for(i=0;i<4;i++)
{
*(p+i)=i;
}
}
for(i=0; i<3; i++)
{
for(j=0; j<4; j++)
printf("a[%d][%d]=%d\t", i, j, a[i][j]);
putchar('\n');
}
return 0;
}


预测数组赋值应为:
0 1 2 3
0 1 2 3
0 1 2 3

输出结果为:
a[0][0]=0 a[0][1]=1 a[0][2]=2 a[0][3]=3
a[1][0]=0 a[1][1]=0 a[1][2]=0 a[1][3]=0
a[2][0]=0 a[2][1]=0 a[2][2]=0 a[2][3]=0
哪里出问题了???
...全文
114 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fujialin2011 2012-10-12
  • 打赏
  • 举报
回复
p=a[j]在后面没有执行,改为
#include<stdio.h>
#include<stdlib.h>

int main()
{
int a[3][4]={0};
int i=0,j=0;
int *p;
for(; j<3; j++)
{
p=a[j];
for(i=0;i<4;i++)
{
*(p+i)=i;
}
}
for(i=0; i<3; i++)
{
for(j=0; j<4; j++)
printf("a[%d][%d]=%d\t", i, j, a[i][j]);
putchar('\n');
}
return 0;
}
就可以了!
hu7324829 2012-10-12
  • 打赏
  • 举报
回复

for(p=a[j]; j<3; j++) 改成 for(p=a[0]; j<3; p+=4, j++)
夏天__ 2012-10-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
for(p=a[j]; j<3; j++)
{
for(i=0;i<4;i++)
{
*(p+i)=i;
}
}

p你只赋值了一次,该j++为p=a[++j]
[/Quote]

明白了,一不小心就会犯错误、。

[root@bogon temp]# cat t5.c 
#include<stdio.h>
#include<stdlib.h>

int main()
{
int a[3][4]={0};
int i=0,j=0;
int *p;
for(j=0; j<3; j++)
{
p=a[j];
for(i=0;i<4;i++)
{
*(p+i)=i;
}
}
for(i=0; i<3; i++)
{
for(j=0; j<4; j++)
printf("a[%d][%d]=%d\t", i, j, a[i][j]);
putchar('\n');
}
return 0;
}

[root@bogon temp]# gcc -g -o t5 t5.c
[root@bogon temp]# ./t5
a[0][0]=0 a[0][1]=1 a[0][2]=2 a[0][3]=3
a[1][0]=0 a[1][1]=1 a[1][2]=2 a[1][3]=3
a[2][0]=0 a[2][1]=1 a[2][2]=2 a[2][3]=3
lin5161678 2012-10-12
  • 打赏
  • 举报
回复
for(p=a[j]; j<3; j++)
//应该是
for(;p=a[j], j<3; j++)
十八道胡同 2012-10-12
  • 打赏
  • 举报
回复
for(p=a[j]; j<3; j++)
{
for(i=0;i<4;i++)
{
*(p+i)=i;
}
}

p你只赋值了一次,该j++为p=a[++j]

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧