求助:写函数,对二维整型数组转置

dyfyf 2019-08-09 04:46:54
代码为: #include <stdio.h> #include<cstring> int main( ) { int a[3][3]; int i,j; void c(int b[3][3]); for(i=0;i<3;i++) { for(j=0;j<3;j++) scanf(“%d”,&a[i][j]); } c(a); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(“%d”,a[i][j]); printf(“\n”); } return 0; } void c(int b [3][3]) { int i,j; int m[3][3]; memcpy(m,b,9) //把b中数组值复制给m数组 for(i=0;i<3;i++) { for(j=0;j<3;j++) b[i][j]=m[i][j]; } } 使用复制是为了改变b数组中的值,能在主函数中输出。但是确无法输出结果。这是为什么呢?这个程序到底哪里错了?望解答
...全文
113 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dyfyf 2019-08-09
  • 打赏
  • 举报
回复
引用 3 楼 自信男孩的回复:
memcpy(m,b,9);楼上已经给解答了,第三参数是拷贝的字节数,9说明是拷贝9个字节,而m的字节数是9 * sizeof(int)个,在
32位系统上,int是占4个字节。
懂啦,谢谢谢谢
dyfyf 2019-08-09
  • 打赏
  • 举报
回复
引用 2 楼 northwesternwind的回复:
[quote=引用 1 楼 northwesternwind 的回复:]
函数内部memcpy的参数不对,应该是:

memcpy(m,b, 9*sizeof(int))

更简单的写法是 memcpy(m,b, sizeof(m))
[/quote] 懂啦,谢谢谢谢
dyfyf 2019-08-09
  • 打赏
  • 举报
回复
引用 1 楼 northwesternwind的回复:
函数内部memcpy的参数不对,应该是:

memcpy(m,b, 9*sizeof(int))
懂啦,谢谢谢谢
自信男孩 2019-08-09
  • 打赏
  • 举报
回复
memcpy(m,b,9);楼上已经给解答了,第三参数是拷贝的字节数,9说明是拷贝9个字节,而m的字节数是9 * sizeof(int)个,在
32位系统上,int是占4个字节。
northwesternwind 2019-08-09
  • 打赏
  • 举报
回复
引用 1 楼 northwesternwind 的回复:
函数内部memcpy的参数不对,应该是:

memcpy(m,b, 9*sizeof(int))

更简单的写法是 memcpy(m,b, sizeof(m))
northwesternwind 2019-08-09
  • 打赏
  • 举报
回复
函数内部memcpy的参数不对,应该是:

memcpy(m,b, 9*sizeof(int))

69,373

社区成员

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

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