標籤:
簡單的C程式
預先處理指令:在編譯之前執行的指令,一般以 # 開頭。
#include: 系統內建的檔案用<>,自己寫的檔案用 "" 。
.h稱為標頭檔,是用來聲明一些常用的函數,假如想使用這些函數,就必須包含這個標頭檔。
main函數:整個C程式的進入點,一個C程式有且只有一個main函數,C程式main函數不寫傳回值類型不報錯,預設返回int類型。
1 #include <stdio.h>2 3 main()4 {} 開發和運行C程式的步驟
編寫程式——>編譯——>連結(目標代碼 & C語言函數庫)——>產生可執行機器代碼——>運行程式
編譯:將C的來源程式翻譯成電腦可以識別的二進位形式的目標檔案代碼,由C的編譯器完成。編譯成功會產生目標檔案,檔案名稱跟來源程式檔案名稱一樣,副檔名為".obj"。如果一個項目中有多個C源檔案,編譯成功則會產生多個.obj目標檔案。
連結:將所有有關聯的.obj目標檔案和系統提供的C庫函數等組合在一起產生可執行檔的過程,稱為"連結"。
函數函數的分類
1.主函數(main函數)。
2.開發人員自訂的函數
3.C語言提供的庫函數。
函數的聲明和定義
因為C語言是從上往下編譯的,所以調用函數時需要在main函數前做一個聲明。函式宣告可以放在 .h 檔案中,函數定義放在 .c 檔案中。
函數的形參和實參
在定義函數時,函數名後面的 () 中定義的變數成為形參(形式參數),在調用函數時傳入的值稱為實參(實際參數)。
注意:能不能#include .c檔案?
不能。因為.c檔案是定義函數的,#include .c檔案會有函數重複聲明的問題,導致在連結階段報錯。
資料類型
空類型:void
基礎資料型別 (Elementary Data Type):int(整形),float(單精確度浮點型),double(雙精確度浮點型),char(字元型)
構造類型:數組,struct(結構體),union(共用體),enum(枚舉)
指標類型
變數
儲存計算過程中所用的值,必須先定義類型再使用。
定義變數類型,就是為了給該變數分配適當的儲存空間,以便存放資料。
在C語言中,聲明一個局部變數後,沒有經過初始化賦值時可以使用的。不過不建議這樣做,因為系統會隨意給該變數賦值,得到的是一個垃圾資料。變數在使用前還是應該先初始化再使用。
類型修飾符
short |
短型 |
long |
長型 |
signed |
有符號型 |
unsigned |
無符號型 |
1. short和long可以提供不同長度的整形數,可以改變整形數的取值範圍,short的取值範圍是-32768~32767,long的取值範圍是-2147483648~2147483647。
2. 資料的儲存長度也會跟著變化。
3. 不同編譯器環境下,取值範圍和佔用的長度是不一樣的,ANSI \ ISO制訂了以下規則:
- short跟int至少為16位(2位元組)
- long至少為32位(4位元組)
- short的長度不能大於int,int的長度不能大於long
- char一定為8位(1位元組)
基本語句和運算基本語句
迴圈語句:do while、while、for
條件陳述式:if、if-else、switch
goto語句
基本運算
算數運算子:+、-、*、/、%
關係運算子:<、<=、>、>=、==、!=
- 在C語言中,關係運算的結果為"真"就返回1,"假"就返回0。
- 在C語言中,任何非0值都代表"真",只有0值才為“假”。
邏輯運算子:&&、||、!
賦值運算子:=、+=、-=、*=、/=、%=
逗號運算子和逗號運算式:用逗號運算子串連起來的運算式稱為逗號運算式;整個逗號運算式的值是最後一個運算式的值。
條件運算子和條件運算式(三目運算子):運算式1 ? 運算式2 : 運算式3
sizeof:用來計算一個變數或者一個常量、一種資料類型所佔的記憶體位元組數。
注意:
1 size_t size = sizeof(‘A‘);
這時size列印出來為4位元組,因為‘A‘會被轉成 int 型再拿去求所佔位元組數。應更改為:
1 char d = ‘A‘;2 size_t size = sizeof(d);
數組地址
- 電腦中的記憶體是以位元組為單位的儲存空間,記憶體中的每一個位元組都有一個唯一的編號。這個編號就稱為地址。凡存放在記憶體中的程式和資料都有一個地址,也就是說,一個函數也有自己的記憶體位址。
- 當定義一個變數時,系統會分配一個帶有唯一地址的儲存單元來儲存這個變數。變數儲存單元的第一個位元組的地址就是該變數的地址。
一維數組
- 一維數組的定義:類型 數組名 [ 元素個數 ] 。
int a[10];
- [] 只能放在數組名的後面。
- [] 裡面的個數必須是一個固定值,可以為常量、常量運算式。不能使用變數或者Variant 運算式來表示元素個數。
- 定義數組時,系統將按照數群組類型和個數分配一段連續的儲存空間來儲存數組元素。
1 //查看數組的地址2 int a[5];3 //第一種方式:4 printf( "%d" , &a[0] );5 //第二種方式:6 printf( "%d" , a );
數組名代表整個數組的地址,就是數組的起始地址,也就是第0個元素的地址。
一維數組與函數參數
-
- 一維數組的元素作為函數實參,於同類型的簡單變數作為實參一樣,是單向的值傳遞。形參的改變不影響實參。
- 如果一維數組的名字作為函數實參,傳遞的是整個數組,即形參數組與實參數組完全相同,指向的是同一片記憶體空間。在修改形參數組時,實參數組也會被改變。形參數組的元素個數可以省略。
二維數組
- 二維數組的定義:類型 數組名 [ 行數 ] [ 列數 ]
1 int a[2][3];
- 二維數組的儲存:
-
- 可以把二維數組看成是一個一維數組的集合,也就是說二維數組是一個特殊的一維數組:它的元素是一維數組。
- 二維數組的存放順序是按行的順序進行存放的。
1 //查看二維數組的地址2 int a[2][3] ;3 //第一種方式:4 printf( "%d" , &a[0][0] );5 //第二種方式:6 //a[0] 也是個數組,所以 a[0] 就是數組名,就是代表著這個數組的地址7 printf( "%d" , a[0] );8 //第三種方式:9 printf( "%d" , a );
格式符
%.2f |
保留兩位小數 |
%4d |
佔用4個空格的空間 |
& |
取地址符 |
黑馬程式員——C語言基礎(一)