什麼是C語言?
C語言是一種通用的高階程式語言,由美國電腦科學家丹尼斯·裡奇(Dennis Ritchie)在20世紀70年代初在貝爾實驗室開發。C語言被設計為一種系統程式語言,最初用於開發UNIX作業系統。它具有高度的可移植性和效率,並且已經成為了許多其他程式語言的基礎。
C語言具有以下特點:
-
簡潔而靈活: C語言的語法簡潔而靈活,易於學習和理解。它提供了豐富的語言特性,允許程式設計師以多種方式解決問題。
-
高效性: C語言產生的程式碼執行效率很高,因為它是一種編譯型語言,可以直接編譯成機器碼。
-
可移植性: C語言編寫的程式通常具有很高的可移植性,可以在各種不同的計算機平臺上執行而無需進行大量修改。
-
強大的功能性: C語言提供了豐富的庫函式和功能,包括對檔案操作、記憶體管理、資料結構等方面的支援。
-
程序導向: C語言是一種程序導向的程式語言,它透過函式和資料結構來組織程式,使得程式結構清晰、模組化。
-
與硬體互動: 由於C語言可以直接訪問記憶體地址和處理底層細節,因此它特別適用於系統程式設計和與硬體互動的應用。
C語言在電腦科學領域有著廣泛的應用,包括系統軟體開發、嵌入式系統、遊戲開發、編譯器設計等方面。雖然C語言本身並不具備很多現代程式語言的高階特性,但它仍然是一種非常重要的語言,為許多其他程式語言提供了基礎和啟發。
我的第一個C語言程式
#include<stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
Ctrl+F5執行程式碼,其列印結果為:
#include<stdio.h>:每個C語言程式程式碼都包含一個標頭檔案,其中include稱為檔案包命令,其意義是把尖括號內指定的檔案包含到本程式中,成為本程式的一部分。
int main():這是一個程式的入口,並且在一個工程中有且只有一個main函式。在C語言程式中主體是int main()後面加一對花括號{}。
printf:表示要輸出的結果,其結果放入括號雙引號(“ ”)中,如果想要輸出想要的結果有以下固定形式(“需要列印的結果\n”),這裡\n表示換行,可有可無,只需要看列印結果。
return 0:返回值為0,先不深入探討,記住固定格式,打上去即可。
注意,在main函式中每一條語句後面需要跟上一個英文輸入狀態下的分號
資料型別
資料型別 | 描述 | 所佔空間 |
---|---|---|
char | 字元資料型別 | 1位元組 |
short | 短整型 | 2位元組 |
int | 整形 | 4位元組 |
long | 長整型 | 4位元組 |
long long | 更長的整型 | 8位元組 |
float | 單精度浮點數 | 4位元組 |
double | 雙精度浮點數 | 8位元組 |
以下是各種資料型別的空間大小的程式碼實現
#include<stdio.h>
int main()
{
printf("%d\n",sizeof(char) );
printf("%d\n",sizeof(short) );
printf("%d\n",sizeof(int) );
printf("%d\n",sizeof(long) );
printf("%d\n",sizeof(long long) );
printf("%d\n",sizeof(float) );
printf("%d\n",sizeof(double) );
return 0;
}
程式碼中的%d是用來列印整型的,函式sizeof()用於輸出資料型別所佔空間的大小
單位
位元(bit) | 位元組(byte) | KB | MB | GB |
---|
換算關係
$$
1 byte = 8 bit\
1 KB = 1024 byte\
1MB = 1024KB\
1GB = 1024MB
$$
由上可知在,計算機中儲存資料最小的單位是bit(位元),他是一個二進位制的數。
二進位制的世界
0 | 1 |
---|
十進位制的世界
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|
常量與變數
常量:不變的值,例如身份證號、圓周率、性別、血型等
變數: 變得值,例如年齡、體重、薪資等
定義變數的方法
#include<stdio.h>
int main()
{
short age = 20; // 年齡
int higt = 180;//身高
float weight = 88.5;//體重
return 0;
}
首先要先宣告變數是什麼型別的(例如char,short,float等),然後為變數取一個名字(根據習慣即可,後面做專案時要求比較高要見名知意……直接百度翻譯,哈哈~;上面程式碼中體現的變數名字分別是age,higt,weight),最後賦值,用等號連線,並習慣性的打上英文狀態下的分號。
全域性變數和區域性變數
全域性變數:定義在int main()之外的,對整個程式碼均有效
區域性變數:定義只在一對{}之內有效,出了這個範圍則無效
如果全域性變數和區域性變數同時存在,則區域性變數優先被使用。下面的一段程式碼給出形象的展示
#include<stdio.h>
int a = 2025; // 全域性變數
int main()
{
int a = 2023; // 區域性變數
int b = 2024; // 區域性變數
printf("a = %d\n", a);
return 0;
}
// 輸出結果為 a = 2023
變數的使用
下面是計算兩個數的和的程式碼
#include<stdio.h>
int main()
{
// 初始化
int num1 = 0;
int num2 = 0;
int sum = 0;
// 輸入兩個整數
printf("請輸入兩個整數");
scanf("%d %d", &num1, &num2);
// 對輸入的兩個整數加和
sum = num1 + num2;
printf("sum = %d\n", sum);
return 0;
}
//輸出內容
//請輸入兩個整數28 60
//sum = 88
我們在程式碼開始需要對三個變數進行初始化,num1,num2,sum均賦值為0;然後輸出提示語句"請輸入兩個整數",再然後是輸入函式scanf("%d %d", &num1, &num2)來尋找num1,num2的地址,以達到對變數賦值的目的,再由變數sum來承接num1和num2加和的值,最後用printf()函式輸出sum的值。
變數的作用域和生命週期
作用域:區域性變數的作用域是變數所在的區域性範圍;全域性變數的作用域是整個工程
生命週期:區域性變數進入作用域生命週期開始,出作用域生命週期結束;全域性變數的生命週期是整個程式的生命週期
常量
-
字面常量,即已知的值,例如30,3.14,‘W’(字元),“abc”(字串)
-
const修飾的常變數
#include<stdio.h> int main() { const int a = 10; //int a = 20;//報錯 printf("%d\n", a); return 0; }
在C語言中,const修飾的a 本質是變數,但不能被修改,有常量的屬性。
-
define定義的識別符號常量
定義識別符號不佔用記憶體,只是一個臨時的符號,預編譯後這個符號就不存在了。例如,對MAX的賦值在main函式之外定義的
# include <stdio.h> # define MAX 100 int main() { printf("%d\n", MAX); int a = MAX; printf("%d\n", a); return 0; } // 輸出結果 // 100 // 100
-
列舉常量
在定義時需要一一列舉出來的常量,例如三原色(紅色,綠色,藍色),性別(男生,女生,保密_);在定義是需要用到列舉關鍵字enum.
# include <stdio.h> // 三原色 enum Color { RED,//紅色 GREEN,//綠色 BLUE,//藍色 }; int main() { // 宣告一個列舉變數並初始化為列舉常量 RED enum Color c = RED; // 輸出列舉常量的值 printf("Color is: "); // 使用 switch 語句來根據列舉變數的值輸出對應的字串 switch (c) { case RED: printf("RED\n"); break; case GREEN: printf("GREEN\n"); break; case BLUE: printf("BLUE\n"); break; } return 0; }
字串和註釋
字串
字串是由雙引號引起來的一串字元稱為字串字面值,簡稱字串
# include <stdio.h>
int main()
{
printf("Hello,word!\n"); //字串為Hello,word!
char arr1[] = "abcdef";
char arr2[] = { 'a','b','c','d','e','f' };
char arr3[] = { 'a','b','c','d','e','f' ,'\0'};
// f10除錯,看一看三個陣列長什麼樣子
// 如下圖所示
// 字串的長度 -> strlen()
//printf("%d\n", strlen(arr1));
//printf("%d\n", strlen(arr2));
//printf("%d\n", strlen(arr3));
return 0;
}
// 輸出結果
//Hello, word!
//6
//38
//6
透過上面的除錯緩解,我們可以看到字串結束的標誌是“\0”;並且我們還輸出了字串的長度,其中函式strlen()是用來求字串長度的一個函式。
註釋
- 註釋可以梳理思路、
- 對複雜的程式碼進行解釋
- 寫程式碼的時候學註釋,是幫助自己也是幫助他人
注意:我們這裡跳過了一節跳脫字元,將在下一期更新_