C語言筆試題const char *p;在文中三者的區別

首先要解釋下為什麼文章標題只有一個因為最多30個字元!所以請見諒、

請看下面三種定義:

const char *p;

char const *p;

char * const p;

請問,三者有什麼區別呢?

筆者在之前好多家筆試題種都看到這樣的問題,今天想起又拿出重新梳理一下,便於後人學習。

首先看第一種,我們先看p,本著」從里往外」的原則,p是一個char *類型的變數,但char*前面有一個const修飾,即p所指向的內容為const類型不可修改,我們可以寫如下程序進行實驗,當試圖對p指向的數組的第一個元素進行修改時,編譯即可發現報錯:

C語言C++學習交流369203660

第二種:char const *p; const位於char *之間,由於char *是p的類型,此種寫法和const char*等價,大家可以自行實驗,如下圖:

Advertisements

C語言C++學習交流369203660

最後一種,char * const p; 這裡const在p之前,修飾的是p,即p是不可修改的,所以,我們可以實驗:

C語言C++學習交流369203660

可以看到沒有錯誤,p所指向的內容可以修改,而如果試圖修改p的值,如下:

C語言C++學習交流369203660

可以發現依舊是報這個錯誤,大家可以親自上機實驗,來加深理解。或者加學習交流群C語言C++學習交流369203660

所以答案:

const char *p; //聲明一個指向字元或字元串常量的指針(p所指向的內容不可修改)

char const *p;// 同上

char * constp;//聲明一個指向字元或字元串的指針常量,即不可以修改p的值。

Advertisements


得張國榮曾經說過,他最愛的是蘭花,只因它壽命長,而他的一生卻只有短短的四十六年。其中大部分的時間都用來追尋、等待和選擇,像極了王家衛的電影主題。自由,所有的人都想自由。自由地愛,自由地走,自由地生活,與旁人無關。

其實堅持是世間至難之事,眾人都知道,只是他執 迷。執迷於生之困、愛之苦,執迷於永恆的缺失,人情的冷漠,最終亦難破繭而出。

然而世事如同一場大夢。年輕的愛和夢想,破滅和沉淪,只有勇敢如他的人,才懂得那些共性的東西並不會受約於任何的世俗和禁忌。承認事實是對自己的負責。不懼蜚語,遠比製造流言高尚。即使他最終的選擇仍是逃離,即使他逃離的方式如此決絕。

終於,流言不再,罪過不再。芳華盡逝,萬念成空。

一直反覆聽他唱《似水流年》:遠景不見,但仍向著前。誰在命里主宰我,每天掙扎人海裡面。心中感嘆似水流年,不可以留住昨天,留下只有思念,一串串永遠纏。浩瀚煙波里,我懷念往年。外貌早改變,處境都變,情懷未變。

而我早該想到,程蝶衣拔劍的瞬間,心中就是這樣的 凄楚和絕望。

劍尖劃過的時候,身體下墜的時候,應該都有風的聲音。風的聲音,在很多年以前,就被用來形容死亡。如薔薇般凄絕怒放的死亡,心頭平靜抑或絕望,都可以被原諒。

人去經年,風繼續吹…… 十四年~

Advertisements

你可能會喜歡