c 指针写3*3的转置

C语言 码拜 9年前 (2016-04-11) 849次浏览
#include<stdio.h>
int main()
{
	void inv(int (*q)[],int n);
	int a[3][3],i,j;
	int (*p)[3];
	printf("请输入一个3*3矩阵\n");
	for(i=0;i<3;i++)
		scanf("%d",&a[i][j]);
	p=a;
	inv(p,3);
	for(i=0;i<3;i++)
		printf("%d\n",a[i][j]);
	return 0;
}
void inv(int (*q)[3],int n)
{
	int i,j,t;
	for(i=0;i<3;i++)
		for(j=0;j<3;j++)
			if(i<j)
			{
				t=*(*(q+i)+j);
				*(*(q+i)+j)=*(*(q+j)+i);
				*(*(q+j)+i)=t;
			}
}

本人不知道该怎么改了  帮本人看看吧

解决方案

20

可以跑出结果c 指针写3*3的转置

20

void inv(int (*q)[],int n);
改成:
void inv(int (*q)[3],int n);

20

你的inv函数的第二个参数n好像没用到啊?
而且int  (*q)[3]你用这种形式,必须要指定列数3,假如你的矩阵维数不固定的话限制很大

10

请那些喜欢将数组作为函数参数传来传去的码农思考一下为什么不把整个互联网内容当作函数参数传来传去呢?c 指针写3*3的转置

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c 指针写3*3的转置
喜欢 (0)
[1034331897@qq.com]
分享 (0)