作业帮 > 综合 > 作业

求破C语言用指针和函数求转置矩阵

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/21 06:14:48
求破C语言用指针和函数求转置矩阵
 
int a[5][5], 可以拆开来写就比较容易理解

int *a[5]; // 宣告了五个int的指针
int a0[5], a1[5], a2[5], a3[5], a4[5]; // 宣告了五个数组, 每数组含5个int
a[0]=&(a0[0]); // 把相对应数组的地址写入a[n]指针
a[1]=&(a1[0]);
a[2]=&(a2[0]);
a[3]=&(a3[0]);
a[4]=&(a4[0]);

然后回到你的问题 *(*(p+j))+i)到底是什么
p是指针, 是int的指针, 指针的意思就是它的内容是个某个内存的地址

p+j, 就是地址的加法运算, 如果p是1000, j是3, 运算的结果就是1000+3*4, 乘4是因为它是int的指针, int是4字节
而*(p+j), 是指调用地址1012的内容, 用另一种常用的方法写你就会明白
*(p+j) 跟 p[j] 是同一个意思
同样*(*(p+j)+i) 跟 p[j][i] 也是同一个意思
再问: 大神
但是我的b[i][j]=*(*(p+j)+i)
就是将矩阵转置放入b数组里有错么为什么编译说错了求指教我用了行指针
再答: p 跟 a不能就这样关联上的
你把p=a;
改成
p[0]=a[0];
p[1]=a[1];
p[2]=a[2];
p[3]=a[3];
p[4]=a[4];

那就可以通过编译了
再问: 好吧对谢以后还请多指教