C語言程序設計從入門到精通【2025完整版】考研復試 嵌入式 計算機二級 軟考 專升本也適用_嗶哩嗶哩_bilibili
1、第一個C程序
helloC
#include <stdio.h>int main(){printf("hehe");return 0;}
每個C語言程序不管有多少行代碼,都是從main函數開始執行的,main函數是程序的入口,main函數也被叫做:主函數。main 前面的int表示main函數執行結束的時候返回-一個整型類型的值。所以在main函數的最后寫return 0;正好前后呼應。
庫函數:https://cplusplus.com/reference/clibrary/
main函數多種寫法??
2、數據類型
2.1 字符char
2.2 整型int
2.3 浮點型float/double
2.4 布爾類型_Bool
3、scanf函數??
#include <stdio.h>int main(){int score = 0;printf("請輸入文字");scanf("%d", &score);printf("成績為:%d\n", score);return 0;}
&
符號是取地址運算符,它的作用是獲取變量在內存中的存儲地址。??
scanf
函數需要知道變量在內存中的具體位置,才能將用戶輸入的值寫入對應的內存空間1. 變量名的本質
當你聲明?
int score = 0;
?時,編譯器會做兩件事:
- ?分配內存:為?
score
?分配一塊內存空間(假設地址是?0x1000
)。- ?綁定名稱:將變量名?
score
?與地址?0x1000
?關聯起來,后續所有對?score
?的操作(讀取或寫入)都通過這個地址完成。
?2. 直接賦值時發生了什么?
當執行?
score = 10;
?時:
- ?編譯器自動翻譯:編譯器知道?
score
?的內存地址是?0x1000
,所以直接生成機器指令:?將值?10
?寫入地址?0x1000
。- ?無需手動操作地址:變量名?
score
?已經隱含了地址信息,因此不需要用?&
?去取地址。
?3. 為什么?
scanf
?需要?&
?
scanf
?是一個函數,它的工作機制不同:
- ?函數參數傳遞:C語言默認是“值傳遞”,即函數接收的是參數的副本,而非原始數據。
- ?必須顯式傳遞地址:要讓?
scanf
?修改外部變量?score
,必須告訴它?score
?的地址(&score
),否則它只能操作一個臨時的副本。簡單理解:形參要想改變實參的值,必須加上&??
占位符
用賦值忽略符
4、getchar函數
#include <stdio.h>int main(){char ch = getchar();printf("字符%c", ch);return 0;}
#include <stdio.h>int main(){int len = 0;while(getchar() != '\n') {len++;}
printf("長度%d", len);return 0;}
5、sizeof函數
6、指針??
#include <stdio.h>void main(){int a = 10;int *ptr = &a; // 這里的*ptr表明聲明一個指針變量,存儲a的地址// a(變量) → 內存地址:0x1000,存儲的值:10// ptr(指針) → 內存地址:0x2000,存儲的值:0x1000(即 a 的地址)printf("打印指針里面存儲的地址%d\n", ptr);printf("打印指針里面存儲的地址里面的值%d", *ptr);}
?