C語言(三 字串 結構體 共用體 輸入輸出)

2021-08-28 16:18:03 字數 2215 閱讀 6876

字串

字串是儲存了一些字元,最後以null(』/0』)結尾的一維字元陣列。

char str[6] = ;

char str[ ] = "hello" ;

還有一些字串操作函式:

1、strcpy(s1,s2) 複製s2到s1

2、strcat(s1,s2) 將s2連線到s1後

3、strlen(s1) 返回s1的長度

4、strcmp(s1,s2) 比較s1和s2,從左到右,按照asc||碼大小比較,若相等,返回0,若s1s2,則返回大於0;

5、strchr(s1,ch) 返回字元ch在s1中的位置

6、strstr(s1,s2) 返回字串s2在s1中第一次出現的位置

結構體

結構體是使用者自定義儲存型別不同的變數的資料型別。

struct books

books b1,b2; //定義兩個books型別的結構體變數

在使用結構體內變數時,使用成員訪問運算子(.),如books.id,結構體同樣可以作為函式引數。

結構體指標

定義方式與其他資料型別定義指標相似,struct books * p = &b1;

要取到結構體內部資料,int num = p->id;

共用體

共用體是一種特殊的資料型別,它允許在記憶體中的同一位置儲存不同的資料型別。可以自定義乙個帶有多個成員的共用體,但同一時間只能允許其中一種型別帶有值。

union data data;

data.i = 10;

若我們按順序給data的三種資料型別賦值,那麼只有最後賦值是有效的,同乙個記憶體位置只能儲存乙個資料,而且共用體所佔大小是根據最大成員來決定的。

位,字,位元組

:"位(bit)「是電子計算機中最小的資料單位。每一位的狀態只能是0或1。

位元組:8個二進位制位構成1個"位元組(byte)」,它是儲存空間的基本計量單位。1個位元組可以儲存1個英文本母或者半個漢字,換句話說,1個漢字佔據2個位元組的儲存空間。

:"字"由若干個位元組構成,字的位數叫做字長,不同檔次的機器有不同的字長。例如一台8位機,它的1個字就等於1個位元組,字長為8位。如果是一台16位機,那麼,它的1個字就由2個位元組構成,字長為16位。字是計算機進行資料處理和運算的單位。

一般的計算機都已經到了64位機 也就是說 乙個基本單位就是64位,也就是8位元組了。這樣再綜合上面的分析就不難看出,結構體,共用體,位域的定義中,按順序分配記憶體,下乙個欄位所佔大小如果超出了上乙個欄位佔的記憶體單元剩餘部分,那麼它會重新申請下乙個記憶體單元,而上乙個多出部分將空著。

typedef與#define

兩者作用相似,都可以為型別定義別名,但是#define也可以為數值定義別名,#define one 1;還有乙個區別就是,typedef是編譯器進行處理的,#define是預編譯器進行處理的。

c輸入&輸出

stdio.h 是c語言標準輸入輸出標頭檔案,#include 預編譯引入標頭檔案。

printf() 標準輸出(螢幕)

%d:格式化整數輸出;%f:格式化浮點數輸出。

getchar()讀取下乙個鍵入的單個字元,並返回為整數;

**putchar()**向螢幕輸出乙個單個字元,並返回相同的字元,兩個函式同時只能返回乙個字元。

**gets(char * s)**從輸入流中讀取一行放到s所指向的緩衝區,直到遇到終止符或eof;

**puts(char *s)**把字串s和尾隨的乙個換行符輸出。

**scanf()**從標準輸入流中讀取輸入

**printf()**把輸出寫到標準輸出流中

#include int main( )
結果:

enter a value :run 123

you entered: run 123

另外,scanf()遇到空格會停止讀取,i love you 會被認為是三個字串。

陣列 字串 結構體 共用體 列舉

1 void 是乙個指標型別,malloc返回的是乙個void 型別的指標,實質上malloc返回的是堆管理器分配給我本次申請的記憶體空間的首位址 malloc 返回的值其實是乙個數字,這個數字表示乙個記憶體位址 為什麼要使用void 作為型別?主要原因是malloc幫我們分配記憶體是只分配了記憶體...

5 陣列 字串 結構體 共用體 列舉

堆的使用 malloc的一些細節 有些特殊資料段會被放到 段 總結 c語言沒有原生字串型別 c語言使用指標來管理字串 c語言中字串的本質 注意 儲存多個字元的2種方式 字串和字元陣列 字元陣列初始化與sizeof strlen 字串初始化與sizeof strlen 字元陣列與字串的本質差異 記憶體...

陣列與字串以及結構體還有共用體

1陣列 1.普通宣告和初始化 int nums 3 2.只宣告 int num 3 這樣陣列裡的元素值是未知的 3.只宣告,然後賦值 int num 3 num 0 1 num 1 34 num 2 9 4.文藝青年的初始化 int nums 3 第0個元素賦值為89,其他預設為0 int nums...