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是一個陣列,也是一個地址,後...