1. 程式人生 > >C語言基礎雜記(一)

C語言基礎雜記(一)

  • 標頭檔案裡的 < stdio.h > 相當於工具箱,這是個庫檔案,裡面有printf,scanf…..等功能

  • ·#include是匯入標頭檔案的預編譯的指令,作用是匯入如上面的< stdio.h >這種庫

  • < stdio.h > 和 “stdio.h” 標頭檔案是有區別的,< >是系統裡面的庫檔案,“ ”著重於使用者自定義的庫。他們的搜尋方式也不同,< >直接去找系統自提供的庫,“ ”先找使用者自定義的庫,找不到就去系統再找

  • main() 函式,作為程式的唯一入口,有且僅有一個

  • \n表示換行,是轉義字元

  • //是單行註釋,/*……*/裡面可以寫多行註釋

  • C的資料型別

  • 一個最基本的記憶體單元是1Byte(位元組), 1Byte = 8bit(位)

  • 整數分為有符號整數和無符號整數,有符號整數(2個位元組)它的範圍是2^-15——2^15-1 .那為什麼不是16(2位元組 * 8位)呢?因為一最高位拿來表示符號了

  • 無符號整型:unsigned int . 像int , float , char前面沒有unsigned都是無符號的,無符號預設是正數

  • 16位編譯器

    char :1個位元組 char*(即指標變數): 2個位元組 short int : 2個位元組 int: 2個位元組 unsigned int : 2個位元組 float: 4個位元組 double: 8個位元組l ong: 4個位元組 long long: 8個位元組 unsigned long: 4個位元組

  • 32位編譯器

    char :1個位元組char*: 4個位元組 short int : 2個位元組int: 4個位元組 unsigned int : 4個位元組 float: 4個位元組 double: 8個位元組 long: 4個位元組 long long: 8個位元組 unsigned long: 4個位元組


  • 常量:取值不可變的量
    1.整形常量
    2.實型常量
    3.字元型常量
    4.符號常量

  • 序列(字串)

這裡寫圖片描述
假如把這個序列打引下來,你會發現只有abc,\0是空字元是轉義字元是結束的標誌

printf("abc\0ef\n")
  • 轉義字元
    轉義字元

printf("I am W\n")
  • 記憶體裡是:
    這裡寫圖片描述
    序列的空格也在記憶體中,\n是轉義字元換行,\0是序列結束標誌,寫了7個字元其實記憶體有8位,最後一位是\0

  • 符號常量:用一個識別符號表示常量,#define NUM 7;
    ,#define是預編譯指令,凡是以#開頭的指令在程式執行進行前就執行了,這就是全域性變數的原理,改了前面的數字就改變了全部,列如下面的程式碼:

#define NUM 7
int a = NUM;
int b = NUM;

#define NUM2 7
printf("He say,he is %d years old\n",NUM2);
%d          十進位制整數佔位符
%c          字元佔位符
%f(.2f)     浮點型別佔位符(小數部分佔2位)
%i          十進位制、八進位制、十六進位制整數佔位符
%p          地址佔位符(指標佔位符)
%s          字串佔位符
%x(X)       十六進位制整數佔位符
%o          八進位制整數佔位符
%%          輸出%
  • 識別符號:是使用者在程式設計時通過C語言的字元為變數以及函式指定名子
    識別符號是由數字,字母,下劃線組成,首字母不能是數字,還不能和關鍵詞重複

1 資料型別關鍵字(12個):
(1) char :宣告字元型變數或函式
(2) double :宣告雙精度變數或函式
(3) enum :宣告列舉型別
(4) float:宣告浮點型變數或函式
(5) int: 宣告整型變數或函式
(6) long :宣告長整型變數或函式
(7) short :宣告短整型變數或函式
(8) signed:宣告有符號型別變數或函式
(9) struct:宣告結構體變數或函式
(10) union:宣告聯合資料型別
(11) unsigned:宣告無符號型別變數或函式
(12) void :宣告函式無返回值或無引數,宣告無型別指標(基本上就這三個作用)

(2)控制語句關鍵字(12個):
A迴圈語句
(1) for:一種迴圈語句(可意會不可言傳)
(2) do :迴圈語句的迴圈體
(3) while :迴圈語句的迴圈條件
(4) break:跳出當前迴圈
(5) continue:結束當前迴圈,開始下一輪迴圈
B條件語句
(1)if: 條件語句
(2)else :條件語句否定分支(與 if 連用)
(3)goto:無條件跳轉語句
C開關語句
(1)switch :用於開關語句
(2)case:開關語句分支
(3)default:開關語句中的“其他”分支
D
return :子程式返回語句(可以帶引數,也看不帶引數)

3 儲存型別關鍵字(4個)
(1)auto :宣告自動變數 一般不使用
(2)extern:宣告變數是在其他檔案正宣告(也可以看做是引用變數)
(3)register:宣告積存器變數
(4)static :宣告靜態變數

4 其它關鍵字(4個):
(1)const :宣告只讀變數
(2)sizeof:計算資料型別長度
(3)typedef:用以給資料型別取別名(當然還有其他作用
(4)volatile:說明變數在程式執行中可被隱含地改變


  • 變數的定義
    int a ; // 資料型別說明 + 識別符號
    定義一個整型變數,定義的過程就是申請記憶體的過程,根據資料型別決定記憶體大小,這個記憶體是在棧中,我們給這個變數定義的資料在資料區,當printf的時候從資料區賦值出一份給a

  • 變數的初始化
    1.給定一個有意義的初始量
    2.清理記憶體的垃圾值

int a=0; //a = 0表是清理了垃圾值,如果是非0就是正常賦值
  • 變數的賦值
    1.初始化定義時直接賦值
    2.賦值是變數的定義和賦值分開
int a;
...
...
a = 7;