C语言用指针求两个矩阵的差,求破C语言用指针和函数求转置矩阵
int a[5][5], 可以拆開(kāi)來(lái)寫(xiě)就比較容易理解
int *a[5]; // 宣告了五個(gè)int的指針
int a0[5], a1[5], a2[5], a3[5], a4[5]; // 宣告了五個(gè)數(shù)組, 每數(shù)組含5個(gè)int
a[0]=&(a0[0]); // 把相對(duì)應(yīng)數(shù)組的地址寫(xiě)入a[n]指針
a[1]=&(a1[0]);
a[2]=&(a2[0]);
a[3]=&(a3[0]);
a[4]=&(a4[0]);
然后回到你的問(wèn)題 *(*(p+j))+i)到底是什么
p是指針, 是int的指針, 指針的意思就是它的內(nèi)容是個(gè)某個(gè)內(nèi)存的地址
p+j, 就是地址的加法運(yùn)算, 如果p是1000, j是3, 運(yùn)算的結(jié)果就是1000+3*4, 乘4是因?yàn)樗莍nt的指針, int是4字節(jié)
而*(p+j), 是指調(diào)用地址1012的內(nèi)容, 用另一種常用的方法寫(xiě)你就會(huì)明白
*(p+j) 跟 p[j] 是同一個(gè)意思
同樣*(*(p+j)+i) 跟 p[j][i] 也是同一個(gè)意思
再問(wèn): 大神
但是我的b[i][j]=*(*(p+j)+i)
就是將矩陣轉(zhuǎn)置放入b數(shù)組里有錯(cuò)么為什么編譯說(shuō)錯(cuò)了求指教我用了行指針
再答: p 跟 a不能就這樣關(guān)聯(lián)上的
你把p=a;
改成
p[0]=a[0];
p[1]=a[1];
p[2]=a[2];
p[3]=a[3];
p[4]=a[4];
那就可以通過(guò)編譯了
再問(wèn): 好吧對(duì)謝以后還請(qǐng)多指教
總結(jié)
以上是生活随笔為你收集整理的C语言用指针求两个矩阵的差,求破C语言用指针和函数求转置矩阵的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 已知c语言程序有主程序模块prog.c,
- 下一篇: 用c语言编写数码管的显示函数,各位大神,