C语言用指针求两个矩阵的差,求破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];
那就可以通過編譯了
再問: 好吧對謝以后還請多指教
總結
以上是生活随笔為你收集整理的C语言用指针求两个矩阵的差,求破C语言用指针和函数求转置矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 已知c语言程序有主程序模块prog.c,
- 下一篇: 用c语言编写数码管的显示函数,各位大神,