1 回答

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
原文是對(duì)的。
將字符串賦值給字符指針是可以的,這相當(dāng)于讓指針指向字符串的首字符?;蛘邠Q一種解釋?zhuān)鹤址褪亲址麛?shù)組,而這樣賦值過(guò)程中會(huì)讓數(shù)組隱式轉(zhuǎn)型為指向首元素的指針,所以實(shí)際上這里發(fā)生的就是指針間的賦值,是合法的。
但是這個(gè)例子不太好,因?yàn)檫@是讓普通字符指針指向字符串常量。因?yàn)樽址A渴遣豢尚薷牡?,而讓一個(gè) char 指針指向它之后,就有可能寫(xiě)出通過(guò) s 修改這個(gè)字符串的代碼。這將會(huì)引起運(yùn)行時(shí)錯(cuò)誤,應(yīng)該避免這樣的用法。 更合適的寫(xiě)法是讓字符常量指針(const char *)來(lái)指向字符串常量。 但編譯器不會(huì)就此問(wèn)題報(bào)錯(cuò),所以原題中的代碼也算合法,只是有隱患而已。
可如果寫(xiě)成?*x.s = "hello",那么 *x.s 是解引用了 s 指針,得到的是 char 類(lèi)型(就是 s 所指的字符'h'),后面再將字符串常量賦值給字符類(lèi)型就不對(duì)了。
你是對(duì)的。
運(yùn)算順序是這樣的: p->s 得到的是 s,再經(jīng)過(guò)后置自增++ 得到的值還是 s 自增前的值(當(dāng)然 s 最終會(huì)自增),最后再解引用* 得到 s 自增前所指的字符。s 一開(kāi)始指向的就是"hello"中的第一個(gè)字符 h,所以會(huì)得到 h。
- 1 回答
- 1 關(guān)注
- 2390 瀏覽
添加回答
舉報(bào)