C程式簡介
#include <stdio.h>
/**
* <> 尋找系統的資源
* "" 尋找我們自己的資源
* .h .hpp 為頭檔案
* .c .cpp 為實作檔案
*/
int main() {
printf("Hello Wold");
return 0;
}
-
表示要引入一個庫,#include <stdio.h>
是C語言的一個标準庫。stdio.h
- 為注釋,編譯時會被編譯器忽略。
-
是主函數,程式從這裡開始執行。int main()
-
是printf()
提供的一個函數,會列印相應的消息。stdio.h
-
終止 main() 函數,并傳回值 0。return 0;
運作結果.png
C語言資料類型
類型 | 位元組 | 值範圍 |
---|---|---|
char | 1位元組 | -128 ~ 127或 0 ~ 255 |
unsigned char | 1位元組 | 0 ~ 255 |
signed char | 1位元組 | -128 ~ 127 |
int | 2 或 4 位元組 | -32,768 ~ 32,767 或 -2147483648 ~ 2147483647 |
unsigned int | 2 或 4 位元組 | 0 ~ 65,535 或 0 ~ 4294967295 |
short | 2 位元組 | -32768 ~ 32767 |
unsigned short | 2 位元組 | 0 ~ 65535 |
long | 4 位元組 | -2147483648 ~ 2147483647 |
unsigned long | 4 位元組 | 0 ~ 4294967295 |
float | 4 位元組 | 1.2E-38 ~ 3.4E+38 |
double | 8 位元組 | 2.3E-308 ~ 1.7E+308 |
以64位機器為例,下圖為各個類型所占位元組數:
C語言資料類型所占位元組數-64位機器.png
C語言指針類型
在C語言中,每個變量都會有一個記憶體位址,而指針就是用來儲存記憶體位址,即指針 = 記憶體位址
#include <stdio.h>
int main() {
int int_value = 100;
int *p = &int_value;
printf("int_value的記憶體位址:%p\n", &int_value);
printf("*p指向的記憶體位址:%p\n", p);
printf("*p指向的記憶體位址所對應的值:%d", *p);
return 0;
}
-
,這裡我們定義了一個 int類型的變量,并為其指派為 100,其中int int_value = 100
為變量名稱,你也可以用其他變量名稱,隻要符合規範即可。int_value
-
這裡我們定義了一個 int類型的指針變量,并将int *p = &int_value
這個變量的記憶體位址指派給int_value
,*p
是用來指定一個變量為指針類型。*
&
為取位址符,即擷取一個變量的記憶體位址。
下圖是上面代碼被編譯執行時的結果
image.png
當然,除了int類型的指針,也可以定義其他類型的指針,在C語言中萬物皆指針,如下:
#include <stdio.h>
int main() {
/** int 類型的指針 */
int *ip;
/** double 類型的指針 */
double *dp;
/** float 類型的指針 */
float *fp;
/** char 類型的指針 */
char *cp;
return 0;
}
指針的應用
#include <stdio.h>
void swapValue(int *value1, int *value2) {
int tmp = *value1;
*value1 = *value2;
*value2 = tmp;
}
int main() {
int value1 = 100;
int value2 = 200;
printf("--------- before swapValue ---------\n");
printf("value1 = %d\n",value1);
printf("value2 = %d\n",value2);
printf("--------- after swapValue ---------\n");
swapValue(&value1, &value2);
printf("value1 = %d\n",value1);
printf("value2 = %d\n",value2);
return 0;
}
- 首先,我們定義了另外一個函數:
,這個函數接收兩個int類型的指針。void swapValue(int *value1, int *value2)
-
表示 将*value1 = *value2
指向記憶體位址所對應的值取出并指派給*value2
所指向的記憶體位址。*value1
- 然後調用
函數來實作值的互換,swapValue
函數接收兩個指針類型,而指針 = 記憶體位址,是以我們分别取出swapValue
和value1
value2
的記憶體位址傳遞進去,來實作值的互換。
下圖為程式的運作結果:
運作結果.png
系統:Windows 10 64位
IDE:CLion