| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9349 人关注过本帖
标题:将一个3*3矩阵转置
取消只看楼主 加入收藏
forice
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-8-25
收藏
 问题点数:0 回复次数:2 
将一个3*3矩阵转置
main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
int *p,i;
p=&a[0][0];
move(p);
for(i=0;i<3;i++)
printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]);
}
move(int *pointer)
{
int i,j,t;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{
t=*(pointer+3*i+j); //我这里看不明白。当开始第二个循环体时当j=1时,岂不是交换*(pointer+1)与*(pointer+3)
*(pointer+3*i+j)=*(pointer+3*j+i); //那这个*(pointer+3)是哪个元素?怎么用种方式表示
*(pointer+3*j+i)=t; //根据指向二维数组的指针*(pointer+i)+j表示的是指向第i行第j列的地址,那上面的*(pointer+3)岂
} //不是指向第三行第零列的地址?就是这里很模糊,请指教。THX~~
}
搜索更多相关主题的帖子: 矩阵 
2006-09-19 21:18
forice
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-8-25
收藏
得分:0 
以下是引用C之Itachi在2006-9-19 21:57:02的发言:

根据指向二维数组的指针*(pointer+i)+j表示的是指向第i行第j列的地址,那上面的*(pointer+3)岂

int a[3][3],(*p)[4],i,j;(这时的 *(p+i)+j为i行 j列)



int a[3][3],*p;(这时的*(p+3*i+j)就是LZ这个程序里的.)
的区别..

个人认为是这样.我刚好学到2维数组与指针...LZ努力
共同进步呀..
呵呵


我看不懂什么意思哦

2006-09-19 22:13
forice
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-8-25
收藏
得分:0 
以下是引用Sally_SJL在2006-9-19 22:23:14的发言:

*(pointer+3)应该是第二行的第一列吧,就是4
其实是2和4互换,3和7互换。。。。,应该是这样吧

我也是初学者,大家一起进步!

嗯,我知道2,4互换。

但是我不明白*(pointer+3)为什么是指向第二行的第一列。
第二行第一列我们不是可以用*(pointer+2)+1表示吗

2006-09-19 22:28
快速回复:将一个3*3矩阵转置
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016970 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved