Re: [問題] 二維陣列利用函式改內容
※ 引述《larryho (新人偉)》之銘言:
: 請問一下各位大大,在C程式裡面,我現在在主程式中(main)裡有
: 一個存放字元的二維陣列(假設這樣 A[2][2] ),如果我想要用函式
: 的方式去更改或整裡裡面的內容,例如使用氣泡排序法去排序,這
: 樣的話我應該如何使用call by reference的方式去做?(主要問題在
: 該傳什麼形式的指標給函式(*ptr? *ptr[]?),還有函式內的指標不知
: 如何控制二維陣列(++ptr or what?))
: 第二個問題,如果這樣做的話,以一個良好的程式設計習慣來說,到
: 底好還是不好?因為直接用函式直接更改資料,感覺上有點不是很好
: 可是萬一資料量太大,如果又再設一個空間給它放,又怕會爆掉~
: 感謝各位的解答,新手問題,請多多包涵~
依你的問題寫個簡單範例給你參考
void sort(int *ptr,int size){
//*ptr=array[0]
//*(ptr+1)=array[1]
ptr++;
//*ptr=array[1]
//*(ptr+1)=array[2]
}
int main(){
const int size;
array[size];
sort(&array[0],size); // 傳遞陣列的初始位址及陣列大小
system("pause");
return 0;
}
或許你會分不清什麼是取值或取位址
指標所儲存的內容是位址而不是值
所以在指標前加上* 就是顯示這個指標指向的位址中的值
如果沒加上*就只是單純的顯示這個指標目前指向的位址
而在變數前加上&則是取位址的意思
不知道這樣解釋你會不會比較清楚一點
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.30.10.154
推
09/28 17:24, , 1F
09/28 17:24, 1F
→
09/28 17:30, , 2F
09/28 17:30, 2F
推
09/28 18:19, , 3F
09/28 18:19, 3F
→
09/28 19:15, , 4F
09/28 19:15, 4F
推
09/28 20:11, , 5F
09/28 20:11, 5F
→
09/28 20:11, , 6F
09/28 20:11, 6F
→
09/28 20:21, , 7F
09/28 20:21, 7F
推
09/29 00:16, , 8F
09/29 00:16, 8F
→
09/29 00:16, , 9F
09/29 00:16, 9F
→
09/29 00:17, , 10F
09/29 00:17, 10F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章