[問題] 陣列作為參數傳入函數

看板C_and_CPP作者 (阿瑜)時間10年前 (2014/03/07 12:52), 編輯推噓6(602)
留言8則, 6人參與, 最新討論串1/1
我想利用sizeof計算陣列的大小,在main裡沒有問題,但在arrParm函數內, 編譯器只把傳入的陣列位址當作一個指向整數型態的指標,所以sizeof(arr) 取到的值是8,而不是20 我該如何將陣列傳入函數,才能讓compiler知道我傳的是陣列,而不只是一個 指向整數的指標呢?麻煩大家幫忙了,謝謝。 程式碼如下: #include <iostream> using namespace std; void arrParm(int* arr) { for (int i=0; i<sizeof(arr)/sizeof(int); i++) cout << arr[i]; } int main() { int inarray[] = {1,2,3,4,5}; for (int i=0; i<sizeof(inarray)/sizeof(int); i++) cout << inarray[i]; cout << endl; arrParm(inarray); return 0; } 輸出: 12345 12 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.138.176.173

03/07 12:55, , 1F
int* arr只是新的指標, 不是你傳入的陣列. 你要多傳size參數
03/07 12:55, 1F

03/07 13:06, , 2F

03/07 13:34, , 3F
Pass by reference
03/07 13:34, 3F

03/07 13:37, , 4F
發現樓上好像已經回答了 XD
03/07 13:37, 4F

03/07 14:04, , 5F
傳參考加template這招好屌...長知識了,謝謝各位
03/07 14:04, 5F

03/07 18:13, , 6F
推 長知識
03/07 18:13, 6F

03/07 19:12, , 7F
超屌 2F感謝大大
03/07 19:12, 7F

03/07 20:44, , 8F
template 用法好方便,推一下
03/07 20:44, 8F
文章代碼(AID): #1J6L2IIW (C_and_CPP)