字串指標為何不能用p這種方式索引

2022-11-06 00:32:17 字數 800 閱讀 2635

1樓:聽不清啊

請仔細看一下下面程式的二種輸出:

#include

int main()

char *p="how are you";

printf("%s\n",p);

printf("%c\n",*p);

return 0;

第二個程式及其執行結果(也有2種形式的輸出):

#include

#include

int main()

char *name=;

char **p;

int i;

for(i=0;i<2;i++)

p=name+i;

printf("%c  %s\n",**p,*p);

return 0;

2樓:匿名使用者

注意你輸出的是一個字串,printf傳入的應該是字串的首地止,即告訴printf從這個地址開始讀出一個字串,它不同於單個的整形,浮點和字元(printf左邊對應的是格式,右邊對應的是單個的值)。你現在是要把p指向的常量字串列印出來,而p的內容才是這個字串的首地止,那麼傳入printf的應是p。當然如果你是這麼定義的:

char s[5]=「abcd」 則為printf("%s",s); 因為s代表該字串的首地止

3樓:匿名使用者

#include #include

int main(); char **p; int i; for(i=0;i<2;i++) return 0;}

字串指標移動問題,關於字串和指標的問題

因為 p 沒有分配記憶體,指向的是系統的記憶體,那段記憶體是隻讀的,因此改變那裡的值是錯誤的 char a abcde char p a p 1 w 這樣是正確的,因為a那段記憶體是可寫的 你上面的,你可以理解為 const char a abcde char p a p 1 w 錯誤,因為a是co...

c語言用指標方式定義的字串為什麼不能修改

123 本身預設的就是一個字串常量,他的值不容修改,p只是一個指標,執行該字串的首地址,對該地址的值指向的地址空間的值的改變也是不允許的。我也是今天在想這個宣告模式跟char p 123 之間的區別時琢磨的。二維陣列int a i j 當把二維陣列看成一維陣列時宣告指標變數是這樣宣告的 int p ...

請教!關於C 裡的字串 指標 new的用法

p1是一個char指標,p1所指記憶體存放著 a 的地址p2也是char指標,其所指記憶體中存放著變數a的地址p3顯然是不對的,不能把char變數賦值給char指標 p4則存放著字串的首個字元的地址 陣列名稱就是地址.char name new char 20 中name是一個陣列,也是一個地址,後...