c 指標問題啊?謝謝

2022-11-30 01:26:23 字數 914 閱讀 6614

1樓:我已經匿名了

1全部指標p指向的記憶體是存放常量的記憶體,其中的資料不允許修改。詳細的可以參考我的這篇博文 http://hi.

改正:定義p的時候先定義陣列 char a="abclhng"; 再讓指標p指向陣列a:char *p=a;

2樓:明早3點起

這段**想做什麼?

注意你的char *p ="abclhng"實際上是佔8個位元組,因為c風格字串都是以「\0」結尾,所有n=8

3樓:匿名使用者

*p需要一段記憶體來存放"abclhng"字串,你char *p="abclhng";//的話是沒有申請記憶體的

可以改為

char *p=null;

*p = new char[8];

memcpy(p,"abclhng",8);

4樓:匿名使用者

如果你知道答案了 ,請告訴我。我也很疑惑。謝謝。

5樓:匿名使用者

怎麼說呢?char *p="abclhng";這樣定義p是一個字面常量,字面常量只能引用,不能修改,因為c++的語言實現一般把字面常量儲存程式的符號表裡而不是一般的資料區中。符號表是「只讀的」,是一種訪問保護機制,除了字串外,你無法去取一個字面常量的地址。

例如:int *p=&5;這類語句是錯誤的。

其實很簡單理解了,"abclhng"儲存在符號表裡沒有在記憶體裡,而p只是一個指標,通過它你能訪問記憶體,但是現在它指向了符號表中這個常量的位置,而不是記憶體單元,所以你就不能修改了。

char p="abclhng";這樣的話是儲存自愛記憶體裡的,當然可以修改了。

c語言的指標問題,C語言的指標問題

printf c p 3 分佈來看,c是要列印輸出一個字元。p指向那個字元陣列,p就是字元 a 那麼 a 3是多少呢,a 1是b 2 是c 3 是d注意是 p 3 而不是 p 3 這是由區別的。是的。p 3。是對p指向的那個值加3,p開始是指向a的,故a加3後就是d了 而p 執行3次的話,是指標p本...

c 指標問題

第一個程式 a指向的內容是一個常量,所以不可更改 第二個程式,為b分配了空間,又讓a指向b指向的記憶體,所以是可以更改的 下面是對這個問題的測試 include include using namespace std include int main 從這個例子可以看出,在適當的時候加上const是...

C語言指標問題,求教大神C語言指標的問題搞不懂求大神指教

include include include include include static char chongpai char static int pare const void const void static int allocateintegerarr const char size ...