如果我定義了一個全域字串陣列,例如:
char* arr[] = {
"abc",
"def",
"gh",
NULL
};
然后我嘗試更改 main() 函式中的第一個元素,例如:
arr[0]="something"
更改陣列的元素會復制資料嗎?這是否復制了原始 arr[0] 或?
uj5u.com熱心網友回復:
的元素arr包含指向 cstrings 的指標,因為arr被宣告為指向 的指標陣列char。這些元素本身并沒有實際包含cstrings。
因此,當您這樣做時arr[0] = "something",存盤在的資料將arr[0]被 的地址覆寫something。此時,abcand各有一個實體something,但是,您不能再abc使用arr[0]了。
uj5u.com熱心網友回復:
它基本上等同于:
char* arr[4];
arr[0] = "abc";
arr[1] = "def",
arr[2] = "gh",
arr[3] = NULL;
arr[0] = "something";
原始字串“abc”保持不變,但也無法訪問,除非您保存指向它的指標。所以這:
arr[0] = "abc";
char *s = arr[0];
arr[0] = "something";
puts(s);
將列印“abc”;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/315016.html
下一篇:我想呼叫這個3d陣列
