[問題] const array paramater
希望傳入一個array到function裡
但該array的elements的值不要被修改
我知道在定義function時可以在paramater前加個const
以下是我分別用來測試一維跟二維陣列
傳入一維:
void modifyArray(const int b[])
{
b[0]=3;
}
int main()
{
int a[3]={1,2,3};
modifyArray(a);
return 0;
}
a.c: In function 「modifyArray」:
a.c:5: 錯誤:assignment of read-only location 「*b」
不能修改array裡元素的值
這跟我預期的結果沒錯
===================================================
傳入二維:
void modifyArray(const int b[][3])
{
b[0][0]=3;
}
int main()
{
int a[1][3]={{1,2,3}};
modifyArray(a);
return 0;
}
a.c: In function 「modifyArray」:
a.c:5: 錯誤:assignment of read-only location 「(*b)[0]」
a.c: In function 「main」:
a.c:12: 警告:傳遞參數 1 (屬於 「modifyArray」)時在不相容的指標類型間轉換
a.c:3: 附註:expected 「const int (*)[3]」 but argument is of type 「int (*)[3]
」
為何換成二維陣列就不能這樣定義呢?
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.163.250
※ 編輯: wfgh 來自: 140.119.163.250 (11/03 11:32)
→
11/03 11:38, , 1F
11/03 11:38, 1F
→
11/03 11:44, , 2F
11/03 11:44, 2F
→
11/03 11:47, , 3F
11/03 11:47, 3F
→
11/03 11:48, , 4F
11/03 11:48, 4F
→
11/03 11:50, , 5F
11/03 11:50, 5F
→
11/03 11:53, , 6F
11/03 11:53, 6F
→
11/03 11:54, , 7F
11/03 11:54, 7F
推
11/03 13:10, , 8F
11/03 13:10, 8F
→
11/03 13:12, , 9F
11/03 13:12, 9F
推
11/03 13:13, , 10F
11/03 13:13, 10F
推
11/03 13:47, , 11F
11/03 13:47, 11F
推
11/03 14:00, , 12F
11/03 14:00, 12F
推
11/03 14:18, , 13F
11/03 14:18, 13F