C語言基礎九

2021-09-02 04:16:39 字數 2733 閱讀 1114

在宣告全域性變數的時候前面加關鍵字extern可以讓當前原始檔使用其他原始檔中宣告的全域性變數

使用static關鍵字宣告的全域性變數叫做靜態全域性變數,它的作用域被限制在宣告它的那個原始檔內部。

static也可以用來宣告函式,效果和靜態全域性變數一樣

makefile用來完成程式編譯過程的管理,make工具使用makefile檔案完成管理工作。

結構體可以用來把多個不同型別的變數合併成乙個整體,使用方法如下

struct student ;

其中student表示結構體名稱,大括號內部是子變數宣告。結構體宣告不會建立新變數,所以不能進行初始化。

結構體使用方法如下

struct student student;

其中struct student表示結構體資料型別,後面的student表示結構體變數名稱。這裡可以使用類似陣列的初始化語法進行初始化。

typedef關鍵字用來給資料型別起別名,只能使用typedef關鍵字

如果希望在兩個函式之間傳遞乙個結構體變數,則應該使用結構體變數的位址作為引數或返回值。

乙個變數的位址應該是它自身大小的整數倍,double型別的變數位址是4的整數倍。我們把這個規律叫做資料對齊。

乙個結構體變數內部各子變數之間可能會存在空隙,這是由資料對齊造成的。

乙個結構體變數的大小一定是內部最大子變數大小的整數倍,double型別的子變數大小按照4處理。這會造成結構體變數最後出現浪費的位元組,這叫做補齊。

使用位域可以節省結構體所佔空間的大小,方法如下

typedef struct s1;

其中3表示佔3個二進位制位

使用了位域的子變數沒有位址

最高數字儲存在最小位址的位元組中叫大端儲存方式

最小數字儲存在最小位址的位元組中叫小端儲存方式

列舉型別可以把一組名稱轉換成整數,從0開始。使用方法如下

enum ;

#include

#include "01mul.h"

extern int result;

int main()

#include "01mul.h"

int result;

void mul(int value, int value1)

#ifndef __01mul_h__

#define __01mul_h__

void mul(int, int);

#endif //__01mul_h__

/*結構體練習

*/#include

/*struct student ;

typedef struct student student;*/

typedef struct student;

int main() student;*/

//struct student student;

student stu = ;

printf("請輸入年齡,性別和身高:");

scanf("%d %c %f", &stu.age, &stu.gender, &stu.height);

printf("年齡是%d,性別是%c,身高是%g\n", stu.age, stu.gender, stu.height);

return 0;

}/*typedef練習

*/#include

//#define pint int*

typedef int* pint;

int main()

/*結構體練習

*/#include

typedef struct student;

void read(student *p_stu)

void print(student *p_stu)

int main()

/*對齊,補齊練習

*/#include

typedef struct s1;

typedef struct s2;

int main()

/*位域練習

*/#include

typedef struct s1;

typedef struct s2;

int main()

/*聯合練習

*/#include

/*union u1 ;

typedef union u1 u1;*/

typedef union u1;

int main()

else

return 0;

}//08enum

/*列舉練習

*/#include

int main() ;

enum ;

printf("chun是%d\n", chun);

printf("dong是%d\n", dong);

printf("nan是%d\n", nan);

return 0;

}//makefile

a.out : 01main.o 01mul.o

gcc 01mul.o 01main.o

01main.o : 01main.c 01mul.h

gcc -c 01main.c

01mul.o : 01mul.c 01mul.h

gcc -c 01mul.c

clean :

rm *.o a.out

C語言(九)C語言概述

一 c的起源和發展 第一代語言是機器語言,他們全都是 0 1 0 1 第二代語言是組合語言,他們是把這些 翻譯成一些英文單詞。第三代語言是高階語言,c語言,c j a,c 機器語言速度最快,組合語言其次,高階語言速度最慢。高階語言中速度最快的c語言。產生地點 美國貝爾實驗室 bell 創始人 den...

c 基礎 筆記(九)

1 型別轉換 1.1 靜態型別轉換 static cast 1.1.1 父子類之間的指標或者引用可以轉換 1.1.2 基礎資料型別也可以轉換 1.1.3 無父子關係的類之間不可以轉換 1.2 動態型別轉換 dynamic cast 1.2.1 父子類之間的指標或者引用的轉換 1.2.2 基礎資料型別...

c 語言基礎

三個訪問描述符 public private 和protected 都可以修飾類的資料成員和成員函式 public 可以可以被任何訪問,private 只能被該類的公,私成員函式,該類的友元函式或者友元類的成員函式訪問。protected 只能被該類的公,私成員函式和該類的派生類訪問。c 中除了,和...