C語言概述和資料型別

2021-07-14 17:56:11 字數 3743 閱讀 5338

c語言

一、概述

1.嵌入式開發為什麼選擇c語言?

作業系統核心開發用的是c

語言實現

2.為什麼作業系統選擇用c語言進行開發?(即c語言的特點)

1) c語言具有出色的移植性,能夠在多種不同體系結構的軟體平台中實現

2) c語言簡潔緊湊,使用靈活的語法機制,並且能夠直接訪問硬體

3) c語言有很高的執行效率

3.嵌入式開發中的地位——開發工具

1) 面向過程(結構)處理機制:操作具體事務(追究實現原理)

2) 物件導向處理機制:解決巨集觀事物(追究實現物件)**的

復用性,維護性,擴充套件性

復用性:功能**不做修改,直接呼叫

維護性:**出錯可直接修改

擴充套件性:加入新功能時,可直接修改

c語言之父:丹尼斯·里奇

c語言標準:

k&rc

,ansic/c89  c99

標準  

c11標準  【

gcc支援

c89,部分支援

c99】

二、資料結構(基本型別,復合型別)

1.資料結構:資料集合的劃分,不同資料型別對

cpu的意義是不一樣的

① 整型變數                    int a;

② 整型指標變數

int  *a;

③ 整型指標的指標變數         

int  **a;

④ 整型陣列                   

int a[10];

⑤ 整型指標陣列               

int *a[10];

⑥ 整型陣列指標變數           

int (*a)[10];

⑦ 整型函式指標變數

int (*a)(int);

⑧ 整型函式指標陣列

int (*a[10])(int);

⑨ int *(*(*fp1)(int))[10];

fp1:函式指標變數,該函式指標指向乙個形參為

int,返回值為陣列指標,該陣列指向乙個整型指標陣列。

⑩ int *(*(*arr[5])())();

arr:函式指標陣列,該函式指標指向乙個形參為

int,返回值為函式指標的函式,該函式指標指向乙個形參為空,返回值為整型指標

11 float (*(*b()))();

b:指標函式,函式形參為空,返回陣列指標,該指標指向乙個函式指標陣列,該陣列元素指向形參為空,返回值為

float

的函式12 

void *(*c)(char ,int(*)());

c:函式指標變數,指向函式形參為

char

,函式指標,返回值為

void *

13 void **(*d)(int*,char**(*)(char*,char **));

d:函式指標變數,該函式形參為

int*

,另一形參為函式指標變數,該函式形參為

char*

和char**

,返回值為指向指標的指標變數,原函式返回值為指向指標的指標變數

14 float (*(*e[10])(int *))[5];

e:函式指標陣列,該函式指標指向形參為

int*

,返回值為陣列指標,該陣列指標指向5個

float型

2.強制轉化

char

順序是進行隱式型別轉化

3.位元組長度

位元組:8

位  半字:

2位元組, 字:4位元組

資料型別   char

short

intlong

float

double

long long

位元組長度   124

4488

sizeof作為乙個運算子有兩種表示方式:

sizeof a :a

為變數名

sizeof (int):int為資料型別

sizeof與

strlen

的區別1 #include

2 #include 3

4 int main()

5 執行結果

sizeof(a)=6

//加上『\0』

strlen(a)=5

sizeof(b)=100

//陣列分配

100strlen(b)=5

sizeof(c)=4

//指標固定4位元組

strlen(c)=5

指標儲存位址,位址在32

位電腦中為固定長度

4位元組,所以不管什麼型別,所有指標的

sizeof都是4

。 4.對於char

型而言:無符號的取值範圍:

0~255

,有符號的取值範圍:

-128~127

正數:原碼=

補碼負數:原碼=

補碼取反

+1   補碼=

原數的絕對值取反

+1常量是有符號的所以~2=%d=-3

有符號和無符號的區別

有符號數和無符號數進行比較運算(==,,<=,>=)時,

無符號數隱式轉化為有符號數

5.變數與常量

變數的三大特點

1) 變數的資料型別:主要說明變數佔記憶體空間大小如int

型2) 

變數的作用域:作用域變數的有效性範圍,即變數的使用範圍

3) 變數的儲存型別:變數在記憶體中的儲存方式

6.全域性變數與區域性變數的區別:

從作用域看:

全域性變數具有全域性作用域。全域性變數只需在乙個原始檔中定義,就可以作用於所有的原始檔。當然,其他不包含全域性變數定義的原始檔需要用extern

關鍵字再次宣告這個全域性變數。

區域性變數也只有區域性作用域,它是自動物件(auto

),它在程式執行期間不是一直存在,而是只在函式執行期間存在,函式的一次呼叫執行結束後,變數被撤銷,其所占用的記憶體也被收回。

從分配記憶體空間看:

全域性變數,靜態區域性變數,靜態全域性變數都在靜態儲存區分配空間,而區域性變數在棧裡分配空間。

從初始化角度看

全域性變數在沒有初始化的時候,預設為零;區域性變數在沒有初始化時值隨機。雖然全域性變數預設為0

,但是還是定義一下。

7.宣告和定義

定義:建立乙個變數,為其分配記憶體空間,並為他取名,乙個變數只能定義一次。

宣告:告知編譯器,變數名已匹配在一塊記憶體上了,但未為其分配記憶體。

宣告的分類:1.

定義性宣告:既定義又宣告

2.引用型宣告:只宣告不定義

C語言變數和資料型別總結

五 小數 六 c語言轉義字元 七 c語言識別符號 關鍵字 注釋 表示式和語句 八 c語言中的運算 九 資料型別轉換 a 123 int a 123 a 1000 a 9999 printf 格式化輸出 int a 100 int b 200 int c 300 printf a d,b d,c d ...

C 變數和資料型別

宣告在類上的變數為字段,宣告在方法內的為區域性變數。在建立乙個類的示例時,在執行建構函式之前,如果沒有給變數初始值,則編譯器會自動賦予預設值。如果變數是方法的區域性變數,編譯器會認為在使用該變數之前,必須給它顯示的設定乙個值,否則會發生 使用了未賦值的區域性變數 的錯誤。其它情況賦予預設值。如果變數...

c語言基礎之數制和資料型別

程式是為了解決問題和完 們給予的任務而存在的,它主要由演算法和資料構成。演算法是程式解決問題的方法和步驟,而資料就是演算法處理的物件。這兩這對於我們學習c都具有重要的作用,就好比我們學習英語時的單詞和語法之間的聯絡。數制是一種計數的規則。在人們使用最多的進製計數制中,表示數的符號在不同的位置上時所代...