C語言學習筆記 8

2022-01-31 14:14:43 字數 1707 閱讀 7080

1. 字串入門

字串也稱字串字面量,是用一對雙引號括起來的字串行。

我們也許經常會遇到字串特別長的情況,在c#中,我們一般會用@符號來表示。

console.writeline(@"hello

world");

但是在c中,我們會這樣來寫:

int main()

還記得我曾經講的最多的一句話就是,把字串當做字元陣列來玩。

其實在本質上,c語言就是把字串作為字元陣列來處理,當c語言編譯器遇到長度為n的字串時,它會為字串字面量分配長度為n+1的記憶體空間。之所以為n+1,是因為在字串的末尾以』\0』來結尾,來標識字串的結束。

既然,我們說字串在編譯器中以字元陣列來處理,那麼編譯器自然會將其看成char *型別的指標。也就是說,我們可以這樣來寫:

int main()

2. 字元陣列和字元指標這樣的兩個宣告:

char str1="abc";

char *str2="def";

前者是普通的字元陣列,後者是字元指標。兩者都可以用作字串,但是他們是不一樣的。

宣告為陣列時,就像其他常規的陣列一樣,可以隨意修改陣列中的元素,即字串中的字元。但是用字元指標,我們是不能修改的。

另外,宣告為陣列時,我們知道我們不能將這個陣列名賦給其他的陣列,但是如果用指標,我們則可以將該指標指向其他的字串。

用最簡單的例子來說明:

char str1="abc";

char *str2="def";

*str2='q'; //error

str1[0]='q';

前者是錯誤的,後者是正確的。

3. 宣告字元陣列的慣用法

看段**就ok了

#define str_len 10

int main()

在巨集定義處強調的是字串的大小,而在宣告字元陣列的時候,將巨集定義加1,因為要儲存」\0」。

4. 字串的輸入輸出

字串的輸出方式有兩種,printf和puts,下面的例子足以說明他們的區別:

int main()

執行結果如下:

答案就是乙個有換行,乙個沒有換行。

讀取字串也有兩個方法:scanf和gets函式。

我們來說下他們的區別:

scanf會忽略掉之前所有的空白字元,然後讀取所有字元,直到遇到空白字元位置。總之,scanf不會包含任何空白字元,包括空格,製表符等等。

gets不會忽略空白字元,讀取所有字元,直到遇到換行符為止。

舉個例子吧:

C語言學習筆記 8

1 浮點數儲存所帶來的問題 float和double都不能保證可以精確的儲存乙個小數 比如 float 6.234 很可能計算機中儲存的是6.233999 例題 有乙個浮點型變數x怎麼判斷x的值是否為0 if x 0.000001 0.000001 是零else 不是零2 迴圈更新中的變數不能定義成...

C語言學習筆記8

c語言學習 過成中會遇到很多的c語言詞彙和一些常用的c語言相關單詞,那麼我今天就來總結一些關於這方面的知識。語言詞彙 在 語言中使用的詞彙分為六類 識別符號,關鍵字,運算子,分隔符,常量,注釋符等。1.識別符號 在程式中使用的變數名 函式名 標號等統稱為識別符號。除庫函式的函式名由系統定義外,其餘都...

C語言學習筆記(8)函式

函式主要是用於將解決複雜的程式設計問題分解為數個可以分開進行解決的小問題,通過函式分裝,最後在拼連在一起。有利於多人協作開發。函式同樣需要先宣告後呼叫,宣告符號為 void,且函式後一般帶有 在原程式中需要使用相應語句就只需要直接呼叫函式即可。例 include void main void pri...