char p ABCD printfcp 1結果不是B,為什麼

時間 2022-03-15 03:00:13

1樓:

因為+=的優先順序遠低於*,所以*p+=1被解釋為(*p)+=1。如果(*p)+=1正確的話,但結果還是b,之不過是'a'+1=='b',而不是p+1指向了'b'。但是遺憾的是由於char *p="abcd";這樣定義的字串abcd叫常字串,基內容是不容修改的,而(*p)+=1試圖讓第乙個字元a+1變成b,所以會產生執行時錯誤。

char *p="abcd";printf("%c",*p+=1);結果為什麼為空??

2樓:萍水相逢就是緣吧

常量 ?

先吧把常量賦值給乙個變數,如字元陣列

再把變數的位址 給指標

再像 輸出函式那樣操作

char *p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"abcd"))); 為什麼結果是4,

3樓:匿名使用者

因為abcd後面有\0,\0是結束字元,後面的所以是4,即strlen("abcd");

c語言 char *p="abcde"; printf("%s",p);正確;;;char *p="abcde"; printf("%s",*p);錯誤,為什麼啊?

4樓:天雨下凡

語句printf("%s",*p);會出錯,因為%s表示輸出字串,而*p則是指向的字串的第乙個字元,請改成printf("%c",*p);則輸出a,改成printf("%d",*p);則輸出97,

原因分析:

char *p="abcde",則字元指標p指向字串,p的值就是字串首字元的位址,*p就是第乙個字元。

5樓:匿名使用者

你好,%s對應的是字串的位址,p是指標,p的值是"abcde"的首位址。*p是乙個char值就是'a'即97,顯然指向記憶體位址為97的記憶體,所以就崩了。

6樓:蕭竣閏

因為這裡的p是字串abcde的首位址。而*p是指向字串首位址的變數。輸出%s即字串當然要用首位址了

下面程式段的執行結果是( )。 char *p="abcdefgh"; p+=3; printf("%d\n",strlen(strcpy(p,"abcd")

7樓:

halps 說得有道理

strcpy的實現**

char * strcpy(char * strdest,const char * strsrc)

函式把『\0』也拷貝進去了的,而strlen也是取得『\0』之前的

8樓:匿名使用者

我也不知道,身邊也沒有c的編譯器,網上看了看。首先strcpy(p,"abcd")這句是說。將abcd賦值個p,他們之間是怎麼賦值的呢,讓p指標指向「a」的位址,如果取值的話就*p拿到a了。

這個函式返回的值是目標串的位址,也就是p啦,那麼p是個指標怎麼算位址的長度呢,其實就是strlen("abcd")啦,為什麼,計算機知道的啦,因為p指向了「abcd」首位址了,而c語言中預設在abcd後加個結束符的,所以答案就是4了。

9樓:

strlen函式是檢查'\0'作為結束符,strcpy後*p的值應該是「abcd\0fgh」

10樓:你好_舊時光

p+=3後 *p為defgh strcpy 拷貝abcd給指標p 覆蓋原來資料

11樓:那個蘿蔔嘞

p+=3使指標p指向字元"d",函式strcpy的功能是把後面的字串複製到p指標指向的空間,即將"abcd"複製到指標p指向的位址,此時p="abcd";strlen函式的功能是求字串的長度,並返回字元個數,不計最後的"\0"。本題結果為4,即字串「abcd」的長度。

12樓:匿名使用者

可能是abcabcdh吧

答案為什麼是b呢?求高手解答 char str[ ]=「abc」,*p=str; printf(「%s\n」,*(p+1)); a) 66 b) bc

13樓:匿名使用者

printf(「%s\n」,*(p+1));

這樣會出現錯誤吧。

printf(「%s\n」, (p+1)); 結果為bc,因為按照字串列印時,是遇到\0才結束。

或者printf(「%c\n」,*(p+1)); 結果為b,列印某個字元~

14樓:木有想到

char str = "abc", *p=str;

記憶體:p|\/

[a b c \0];

p+1 指標+1運算是根據指標型別進行跳躍,跳1個到下乙個元素,即指向b的位置

p+1|

\/[a b c \0];

printf函式%s是按字串輸出,直到\0結束,從p+1開始到\0就是bc

可能你**抄錯了,正確應該是printf(「%s\n」,p+1);

c語言 char str[ ]="abcd",*p=str; 語句printf("%d\n",*(p+4));輸出結果為0,為什麼?

15樓:匿名使用者

char str="abcd";相當於寫:char str[5]=;

那麼*(p+4)相當於p[4]或str[4]的值是0

這裡運用了兩個c語言的預設格式,乙個是用str讓編譯器根據後面賦值的字串自己統計應當申請的陣列元素個數,另乙個是用字串"abcd"的寫法預設是占用5個字元位置,包括abcd四個字母和最後用來結束字串的0

16樓:篤俠

因為輸出的*(p+4)是字串結束標誌符'\0',其ascii碼為0.

17樓:冉

p+4即表示str[4]

你最大的索引才到str[3]

而在字串後都有結束識別符號的\0, 它的ascii碼值是0.編譯器或許預設將str[4] = 『\0』

22.已知:char s[4] = "cba"; char *p; 執行語句序列p = s;printf("%c\n",*p+1);後,輸出為()

18樓:風雷九州

輸出是d。

解釋如下:

p=s,之後,p和s指向同乙個位址。

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

這句話的意思是輸出*p+1對應的字元,首先計算*p,也就是陣列s的首字母,既s[0],既字母c。字母c+1的意思就是c的下乙個ascii碼字元,也就是小寫字母d。

最終輸出就是字元d。

19樓:金色潛鳥

輸出 d.

p = s; 這句,讓 p 指向了字串 "cna" 的 始位址。就是指向 字元 c。

輸出 *p+1, 就是輸出 字元常量 'c' 加 1, 格式 %c 就是 輸出 ascii 值對應的 字元,所以 是 c 後面 1 個 字元: d

石榴不結果影響產量,不結果都有哪些原因?

1 品種不對。石榴樹品種選擇不當是石榴樹不結果的乙個最基礎的問題,主要是現在石榴樹的品種有很多,而且還有專門僅供欣賞之用的石榴樹,我們稱之為花石榴,它和結果的石榴樹其實沒有什麼區別,如果對石榴不了解的人,很有可能就會買了這種石榴樹,那麼不管你怎麼種都是不可能結果的。2 光照不足。石榴樹它是一種喜光性...

黃瓜為什麼只開花不結果,黃瓜只開花不結果的原因是什麼?

任曉曼愚農 黃瓜花通常於5時半至6時開放,盛花時間為1 1.5小時,花的壽命可延遲到當日午後,雄花翌日脫落,而在低溫的陰雨天氣下壽命較長,翌日仍能正常開花。花冠完全之際,即花藥開藥之時。而花粉則在開花前一日的午後,已具備發芽能力,但到開藥時發芽力才達最高。花粉的壽命在自然狀態下於開藥後4 5小時即迅...

番茄苗開花不結果,怎麼回事,番茄苗開花不結果,怎麼回事? 10

悅享美好時光 我們家種了十幾年番茄,很少出現這樣的問題,看看是不是番茄苗的問題,如果不是的話看看有沒有掐芽,就是把多餘的枝葉去掉,不然長葉子長新枝會消耗很多營養,讓營養都集中在開花結果上。你這個枝葉比較茂盛看看有沒有掐芽 開心小農女 種番茄只開花不結果?教你3個最簡單的方法,提高授粉效果和坐果率 我...