指針指向問題
char?*?const?foo?=?"helloworld";
這里指針指向不可變,但指向的空間中的數(shù)據(jù)可變,請教一下老師這里如何改變變量 foo 內(nèi)存空間中的數(shù)據(jù)呢?
我嘗試了如下做法,發(fā)現(xiàn)并沒有輸出,請教一下為什么不報錯?又為什么沒有任何輸出?謝謝老師!
foo[0]?+=?'c'; cout?<<?foo?<<?endl;
char?*?const?foo?=?"helloworld";
這里指針指向不可變,但指向的空間中的數(shù)據(jù)可變,請教一下老師這里如何改變變量 foo 內(nèi)存空間中的數(shù)據(jù)呢?
我嘗試了如下做法,發(fā)現(xiàn)并沒有輸出,請教一下為什么不報錯?又為什么沒有任何輸出?謝謝老師!
foo[0]?+=?'c'; cout?<<?foo?<<?endl;
2020-09-26
舉報
2020-10-22
這是一個很特別的情況。?
理論上是要報錯的,應(yīng)該無法執(zhí)行,編譯階段就報錯。
"helloworld" 是字符串常量,它是不允許被修改的。
所以你說的“....? 但指向的空間中的數(shù)據(jù)可變” 這句話不對。 字符串常量存放的位置是很特殊的,是只讀的,不允許修改。
可以像下面這樣做:
char arr[20] = "helloworld";
char * const foo = arr;
foo[0] += 'c';
cout << foo << endl;