編譯檔案:cc -c one.c two.c 產生.o目標檔案
連結檔案:cc one.o two.o 預設產生 a.out 執行檔案
指定產生的可執行檔名 cc -o one one.o
連續編譯、連結:cc one.c cc -o one one.c 中間產生的.o檔案會被刪除,最後產生執行檔案
cc one.c two.c 源檔案超過一個時,目標.o檔案便不會被刪除,
以後可以只編譯更改的源檔案 cc one.o two.o three.c
C語言32個關鍵字:
auto double int struct break else long switch
case enum register typedef char extern return union
const float short unsigned continue for signed void
default goto sizeof volatile do if while static
常量修飾:const
c 語言中的進位: 二進位:int a = 0B(b)1100 ; 八進位: int b = 027; 十六進位:int c = 0X(x)AF3;
printf(“%d”, a); printf(“a=%d, b=%x”, a, b);
%4d, 若表示的位元大於4,再按原樣輸出; 若小於4,則補上空格輸出4位,, +4空格補左邊,-4空格補右邊
%.2f 輸出兩位小數,預設是6位
%p 輸出記憶體的地址,, 如:printf(“變數a的地址是:%p”, &a)
scanf(“%f”, &a); scanf(“%d, %s,%f”, &a,&b,&c); 接收多個時,分隔字元可以是任意符號
包括空格、tab、斷行符號
當數值比較小(在char的取值範圍內),用char 比用int 更節省記憶體開銷,因為它只佔1個位元組
char c = ‘A’;與 char c = 65; 是等效的。一個漢字佔兩個字元,用char是不行的,
需要用字元數組來儲存。
局部變數可以在聲明時不初始化,後續使用,與java不同;如果後續賦值是可以的,如果後續直接
使用系統賦給它的預設值是不好的,因為這是一個隨機的垃圾值,不是0。
可以在基礎資料型別 (Elementary Data Type)的前面加一些修飾符,也有人稱之為限定符,一樣的意思。
有以下4種類型修飾符: short 短型 long 長型 signed 有符號型 包括 正負數和0 unsigned 無符號型 正數和0
// 下面兩種寫法是等價的
short int s1 = 1;
short s2 = 1;
// 下面兩種寫法是等價的
long int l1 = 2;
long l2 = 2;
// 可以連續使用2個long
long long ll = 10;
// 下面兩種寫法是等價的
signed int si1 = 3;
signed si2 = 3;
// 下面兩種寫法是等價的
unsigned int us1 = 4;
unsigned us2 = 4;
// 也可以同時使用2種修飾符
signed short int ss = 5;
unsigned long int ul = 5;
unsigned char c1 = 10;
signed char c2 = -10;
long double d1 = 12.0;
short int 取值範圍 類似java中的 short
long int int
long longlong
C語言的基本語句跟Java中的差不多 迴圈語句(do while、while、for) 條件陳述式(if 、if-else、switch) goto語句 (比如在迴圈外 定義一個標記 Exit:; 在迴圈內可以 用 goto Exit;跳出迴圈)
算術運算子 + 加法運算子 - 減法運算子,或負值運算子 * 乘法運算子 / 除法運算子 % 模運算子,或稱取餘運算子,要求%兩側均為整型
關係運算子 < 小於運算子 <= 小於等於運算子 > 大於運算子 >= 大於等於運算子 == 等於運算子 != 不等於運算子
C語言中沒有boolean類型
在C語言中,關係運算的結果為"真"就返回1,"假"就返回0
int a1 = 5 >4;// 1
int a2 = 5 <4;// 0
* 還需注意的是,在C語言中,任何非0值都為"真",只有0值才為"假"如:if(-1){}
if (a=0){}
在C語言中,可以不儲存關係運算的結果因此,下面的寫法是合法的:
int a = 10;
a > 10;
a == 0;
邏輯運算子 && 邏輯與運算子 || 邏輯或運算子 ! 邏輯非運算子
邏輯運算的結果也只有兩個:成立就為"真",返回1;不成立就為"假",返回0
複合賦值運算子 += 加賦值運算子。如a += 3+1,等價於 a = a +(3+1) -= 減賦值運算子。如a -= 3+1,等價於 a = a -(3+1) *= 乘賦值運算子。如a *= 3+1,等價於 a = a *(3+1) /= 除賦值運算子。如a /= 3+1,等價於 a = a /(3+1) %= 取餘賦值運算子。如a %= 3+1,等價於 a = a %(3+1)
自增運算子和自減運算子 ++ 自增運算子。如a++,++a,都等價於a = a+1 -- 自減運算子。如a--,--a,都等價於a = a-1
逗號運算子和逗號運算式
* 逗號運算子主要用於串連運算式,例如:
int a = 9;
int b = 10;
a = a+1 , b = 3*4;
逗號運算式的運算過程是:從左至右的順序,先計算運算式1,接著計算運算式2,...,最後計算運算式n
* 整個逗號運算式的值是最後一個運算式的值c = (++a, a *= 2, b = a * 5); <==> c=b;
三目運算子:int a = (b >5) ? 10 : 9;
sizeof可以用來計算一個變數或者一個常量、一種資料類型所佔的記憶體位元組數。
sizeof(10);
char c = 'a';
sizeof(c);
sizeof(float);
地址
1.電腦中的記憶體是以位元組為單位的儲存空間。記憶體的每一個位元組都有一個唯一的編號,這個編號就稱為地址。
凡存放在記憶體中的程式和資料都有一個地址,也就是說,一個函數也有自己的記憶體位址