C語言深度解剖第一章筆記

2021-07-27 20:33:08 字數 2887 閱讀 9093

1.關鍵字

1.1定義與申明

定義:建立了乙個物件,並分配了相對應的記憶體

申明:告訴編譯器,這個名字已經分配到了乙個記憶體,和這個名字已經被使用。

1.2關鍵字auto

編譯器預設所有變數都是auto,可以忽略

1.3關鍵字register

請求編譯器盡可能將register變數放在cpu內部暫存器上

register修飾的變數必須是乙個單個值,且長度小於或等於整形長度;

register修飾變數可能在不在記憶體中,所以不能用 「&」來獲取register變數位址

1.4關鍵字static

第1個作用:

修飾變數:①靜態全域性變數:作用域為定義處到檔案結束處,其他檔案用extern申明也不能用,命名空間,防止命名重複。

②靜態區域性變數:定義在函式體中,同文件其他函式也不能用;儲存在記憶體靜態區,函式結束不會被銷毀。

第2個作用:

修飾函式:作用域僅限於本檔案,內部函式。不同人編寫函式時不用擔心自定義函式與其他檔案函式同名。

主要分為兩塊:

第一表示某塊函式退出後,區域性變數值還能繼續使用,修飾區域性變數。正常區域性變數是儲存在棧,由系統管理**,全域性變數和靜態區域性變數的儲存地方都是靜態區,但是靜態區域性變數的作用域僅限於本函式。

第二塊為避免不同檔案全域性變數和函式名衝突,表示只在本檔案使用。

第三塊用法:因為儲存在靜態區,未初始化的都會預設初始化為0,省去賦初值為0

總結為static主要功能是隱藏,其次因為static儲存在靜態儲存區,具備永續性和預設值為0.

1.5基本資料型別:short(2)、int(4)、long(4)、char(1)、float(4)、double(4)

變數命名規則:1、望文生意;2、min-length&max-information;3、多片語首字母大寫;4、避免出現數字編號,除非邏輯需要,如驅動管腳;5、多檔案共享使用全域性變數和函式要加限定符如gui_

識別符號命名規則:

模組名縮寫_作用域\資料型別\指標字首_含義標識_陣列\結構字尾

含義識別符號規則,變數為名詞性,datagotfromsd;函式為動詞性,gotdatafromsd

巨集定義、列舉常數、唯讀變數全部用大寫字母,用下劃線分割單詞

區域性變數可採用通用命名方式,mnijk表示int,c、ch表示字元,a表示陣列,p表示指標

typedef struct sm_eventopt

sm_eventopt_st,* sm_eventopt_pst;

不同型別資料之間的運算要注意精度擴充套件,一般低精度向高精度轉換;有符號的向無符號的轉

禁止使用八進位制格式的數,

1.6char、unsigned char、signed char

char申明為單純的字元

signed char和unsigned char是用來宣告數值。

1.7if、else

1.bool變數與零值進行比較

bool btestflag = false;

if(btestflag) if(!btestflag)最好;

if(btestflag == true)不同平台的true定義不一樣;

if(btestflag == 1)btestflag不是整形變數;

賦值運算子不能使用在產生布林值的表示式上;

1.8 switch(variable)

case a:

break;

case b:

break;

default:

break;

case 後面只能接整形或字元型常量或常量表示式

1.9for迴圈

for迴圈將最大迴圈次數放在裡面,減少cpu跨切迴圈層的次數,迴圈巢狀不超過3層

for迴圈控制變數的取值採用半開半閉區間,迴圈內**不超過20行

1.10goto語句

禁用,影響結構化程式設計

1.11void關鍵字

空型別包含所有,都可以賦值給它,但是它不能賦值給別人

c程式預設返回值型別為int。

若函式不接受任何引數一定要指明引數為void。

int intarray_a[100];

memset(intarray_a,0,100*sizeof(int));

int destintarry_a[100];

const int srcintarry_a[100];

memcpy(destintarry_a,srcintarry_a,100*sizeof(int));

1.12volatile關鍵字

表示編譯器不做優化,每次使用時都需要從記憶體中重新讀取。

1.13空結構體占1位元組

1.14大小端,小端模式表示低位址存低位,常見的有arm、dsp

大端模式表示低位址存高位,常見的是x86和c51

1.15enum關鍵字

列舉變數型別可以跟其中的常量符號賦值,不賦值會從賦初值的那個變數開始加1,如果都沒有賦值,從

0開始依次加1.

常量為整形值。

1.16、typedef與const同時修飾變數

typedef struct

student_st,*student_pst;

const student_pst zhangxiong;

student_pst const zhangxiong;

// 兩者表示資訊一致,都是表示zhangxiong不變,並不是指標不表,看const修飾時去掉型別。

typedef static unsigned int int32;//錯誤,typedef儲存類,static也是儲存類。

typedef int bigbear;

static bigbear a;//typedef定義別名不支援擴充套件。

C 第一章(筆記)

1 c語言和c 的發展歷史和基本原理 c 代表過程性語言傳統 c 類代表物件導向語言的傳統 c 模版支援通用程式設計傳統 c程式設計原理 c是過程性語言,強調的是程式設計的演算法方面 c語言前世今生 上世紀70年代,貝爾實驗室,dennis ritchie,開發unix作業系統 傳統上作業系統由組合...

C語言筆記(第一章 C語言程式設計)

標籤 空格分隔 c語言學習 本章主要內容 c語言標準 標準庫的概念 如何建立c程式 如何組織c程式 如何編寫在螢幕上顯示文字的程式 任何物品事件的使用都需要乙個大家都認同的使用規則,如同遊戲一樣,大家需要遵守同乙個遊戲規則,才能更好的使用。1989 年國際標準組織 iso 採納了美國國家標準協會 a...

python第一章筆記 第一章 基礎

參與除法的兩個數中有乙個數為浮點數,結果也為浮點數 如 1.0 2,1 2.0,1.0 2.0 python print 1.0 2 結果 0.5 print 1 2.0 結果 0.5 print 1.0 2.0 結果 0.5 整數 整數,計算結果的小數部分被截除,只保留整數部分 不會四捨五入 如 ...