字元指標與字串

2021-09-25 23:33:55 字數 1274 閱讀 1755

例項1:

#include 

using namespace std;

int main()

執行結果:

error!

!!

例項2:

#include 

using namespace std;

int main()

執行結果:

helloworld

例項3:

#include 

using namespace std;

int main()

執行結果:

h

例項4:

#include 

using namespace std;

int main()

執行結果:

error!

!!

例項5:

#include 

using namespace std;

int main()

執行結果:

10

說明:

用字元指標宣告的字串,這個指標依然是char*型別的。

他只告訴編譯器,這是個位址,該位址中儲存的變數占用了乙個位元組。

實際使用時,它也代表了字串第乙個字元的首位址。

因此在輸出是使用"%s"可以通過字串的首位址,將字串全部輸出,僅需要傳入這個字串的首位址即可。

而此時正好字串的首位址儲存在了字元指標變數中,因此將這個指標變數直接傳入即可不需要解引用。解引用反而會發生錯誤。

但是您可以嘗試,使用"%c",將字串的首個字元列印出來,此時需要解引用。

具體而言還是要歸結與printf()函式的實現方法,

似乎可以認為,當使用"%s"時編譯器就想知道這個字串的首位址,至於到什麼時候結束,那麼編譯器是否可以通過空字元(\0)來最終確定字串的結束呢?

而其他變數不同於字串,他們都有指定的長度,int就是32位(4位元組),那麼想要把這種型別的資料輸出來,那printf()就規定了,在輸出時,請把該位址中的變數解出來(解引用),直接用實際值作為引數而不是位址。

(斜體部分為個人想法)

字串與指標

字元 0 和 0 的區別字元 0 對應的ascii碼為十六進製制30 而 0 即為ascii碼中的0,其對應字元空字元nul。char c 0 char c 0 nul char c 0 char c 48 最典型如memset函式 void memset void buffer,int ch,si...

字串與指標

printf的第二個引數的型別是由 第乙個引數format決定的。當format為 s時,第二個引數就是乙個位址,printf將位址上的值輸出到stdout。當format為 d時,第二個引數就是乙個int型的變數,printf將變數上值輸出到stdout。1 字串的表示形式 在c語言中,我們可以用...

字串與指標

在c語言中,有兩種方式儲存字串,一種是字元陣列,另一種就是指標形式。第一種,字元陣列 字元陣列儲存字串,可以借助陣列下標值訪問和修改字串中的任意乙個字元。第二種 指標形式儲存字串 一 雙引號的作用 1.申請了空間 在常量區 存放了字串 2.在字串尾加上了 0 3.返回位址,返回的位址給p。以字串形式...