在宣告全域性變數的時候前面加關鍵字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 中除了,和...