printf的第二個引數的型別是由
第乙個引數format決定的。當format為%s時,第二個引數就是乙個位址,printf將位址上的值輸出到stdout。當format為%d時,第二個引數就是乙個int型的變數,printf將變數上值輸出到stdout。
1、 字串的表示形式
在c語言中,我們可以用兩種方式訪問字串
(1) 用字元陣列存放乙個字串,然後輸出該字串。
main()
(2) 用字元指標指向乙個字串。可以不定義字元陣列,而定義乙個字元指標。用字元指標指向字串中的字元。
main()
在這裡,我們沒有定義字元陣列,而是在程式中定義了乙個字元指標變數string,用字串常量"i love china!",對它進行初始化。c
語言對字串常量是按字元陣列處理的,在記憶體中開闢了乙個字元陣列用來才存放該字串常量。對字元指標變數初始化,實際上是把字串第
1個元素的位址(即存放字串的字元陣列的首元素位址)賦給
string
。有人認為string是乙個字串變數,以為在定義時把"i love china!"這幾個字元賦給該字串變數,這是不對的!!
實際上,char *string="i love china!";等價於:
char *string;
string = 「i love china!」;
可以看到,string被定義為乙個指標變數,指向字元型資料,請注意它只是指向了乙個字元變數或其他字元型別資料,不能同時指向多個字元資料,更不是把「i love china!」這些字元存放到string中(指標變數只能存放位址),也不是把字串賦給*string。只是把「
i love china!
」的第乙個字元的位址賦給指標變數
string。
在輸出時,要用:printf(「%s\n」, string);,其中「%s」是輸出字串時所用的格式符,在輸出項中給出字元指標變數名,則系統先輸出它所指向的乙個字元資料,然後自動是string加1,使之指向下乙個字元,然後再輸出乙個字元……如此知道遇到字串結束標誌「\0」為止。
注意:可以通過字元陣列名或者字元指標變數輸出乙個字串。而對乙個數值型陣列,是不能企圖用陣列名輸出它的全部元素的。例如:
int i[10];
………printf(」%d\n」, i);
是不行的,只能逐個輸出!!!!!!顯然%s可以對乙個字串進行整體的輸入和輸出。
2、 字串指標作函式引數
將乙個字串從乙個函式傳遞到另外乙個函式,可以用位址傳遞的方法,即用字元陣列名作引數或用指向字元的指標變數做引數。在被呼叫的函式中可以改變字串內容,在主調函式中可以得到改變了的字串。 實參
形參陣列名
陣列名陣列名
字元指標變數
字元指標變數
字元指標變數
字元指標變數
陣列名
字元指標與字串
例項1 include using namespace std int main 執行結果 error 例項2 include using namespace std int main 執行結果 helloworld例項3 include using namespace std int main 執...
字串與指標
字元 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...
字串與指標
在c語言中,有兩種方式儲存字串,一種是字元陣列,另一種就是指標形式。第一種,字元陣列 字元陣列儲存字串,可以借助陣列下標值訪問和修改字串中的任意乙個字元。第二種 指標形式儲存字串 一 雙引號的作用 1.申請了空間 在常量區 存放了字串 2.在字串尾加上了 0 3.返回位址,返回的位址給p。以字串形式...