一、基本資料型別
(一)整型家族
1.整型變數
變數就是指在程式執行過程中可以發生變化的量
整型變數包括短整型(short int)、整型(int)、和長整型(long int),都分為有有符號和無符號;兩種,它們都是以二進位制存放的,每種型別佔不同的位址空間,所以其能表示的數值範圍也都有所限制。當前機器各種型別的取值範圍可在「limits.h」檔案裡檢視
2.整型常量
常量就是指在程式執行過程中不能被改變的量,c語言中整型常量可以用八進位制整數、十進位制整數和十六進製制整數三種。其中八進位制的數要以「0」作為字首開頭,十六進製制需要以「0x」作為字首開頭。另外,整型常量可在結尾加上「l」或「l」代表長整型,「u」或「u」代表無符號整型。
(二)實型家族
實型家族也就是浮點數。
1.實型變數
實型變數又可以分為單精度(float)、雙精度(double)、和長雙精度(long double
)三種。
2.實型常量
c語言中的實型常量只採用十進位制。有十進位制數形式和指數形式,所有的浮點常量都被預設為double型別。
(三)字元型家族
1.字元變數
字元常量可以看做是整形變數的一種,其識別符號為「char」,一般佔乙個位元組(8bits),
也分為有符號和無符號兩種,字元常量實際上完全可以當做是整型變數的一種。當它用於儲存字元常量時,實際上是以該字元的ascii碼值儲存到記憶體單元裡。
2.字元常量
字元常量是指用單括號括起來的乙個字元,如「a」、「d」、「+」、「?」等都是字元常量。
使用字元常量時有以下注意:
* 字元常量只能用單引號括,不能使用其他的符號
* 字元常量只能是單個的字元,不能是字串
* 字元可以是字符集中任意字元,但數字被定義為字元型之後就不能參與數值運算了,如定義字元5,與數字5 是不同的,此時只能以5的ascii碼值來進行運算
除此之外,還存在一些轉義字元
(四)列舉家族
對於有些變數的取值被限定在一定的範圍內,c語言提供了一種稱為列舉的型別,在列舉的型別中定義為該列舉型別的變數取值不能超過定義的範圍。
列舉型別定義的一般格式為
enum 列舉名
;
在列舉值表中應羅列出所有的可用值,這些值也稱為列舉元素
(五)指標家族
1.指標的概念
指標即為位址,在計算機中所有的資料都是存放在儲存器中的,一般可以把儲存器的乙個位元組稱為乙個儲存單元,不同的資料型別所佔的儲存單元不等,為了正確的訪問這些儲存單元,必須為每個單元編號,記憶體單元的編號也叫作位址,找到記憶體單元的位址幾可以找到所需的記憶體單元。通常也把這個位址稱為指標。
2.指標常量
事實上,指標常量只有乙個null(空位址)。雖然指標是乙個如0x00100011這樣的字面值,但因此編譯器負責把變數輔助給計算機記憶體中的位置,程式設計師在事先根本無法知道某個特定變數在記憶體中會儲存在哪個位置,並且,但乙個函式每次被呼叫時,他的自動變數(區域性變數)可以分配的記憶體位置都不同。因此,把指標常量表示成為數值字面值幾乎是沒有用處的。
3.字串常量
字串常量是用一對雙引號括起來的一串字元,雙引號只起定界的作用,雙引號括起的字串中不能是雙引號和反斜桿(),他們在轉義字元中有特有的含義。
c語言中,字串常量在記憶體中儲存時會自動在末尾加乙個「串結束標誌,即ascii碼值為0的字元null,常用「\0"表示。因此,程式中長度為n個字元的字串常量,在記憶體中占用的空間為n+1。
三、常量與變數
(一)變數的意義
1、定義形式||
基本型別
關鍵字整型
int,unsigned,short,long
浮點型float ,double
列舉型enum
字元型char ,unsigned
指標型別
指標型別 *
2.變數的作用域
變數的有效性範圍即變數的作用域,變數的作用域是由變數識別符號的作用域決定的。
(1)區域性變數
在函式內部定義的變數即區域性變數。其僅由其被定義的模組內部所訪問,即區域性變數在進入模組時生成(壓入堆疊),在退出模組是消亡(彈出堆疊)。
(2)全域性變數
全域性變數貫穿整個程式,可被本檔案中任意乙個函式所使用。在整個程式執行的期間有效。
需注意一點,對於區域性變數的定義和宣告,可以不用區分,但對於全域性變數,其定義和宣告不是一回事,全域性變數的定義必須在所有的函式外,且只能定義一次,一般形式為:
[
extern
] 型別說明符 變數名 , 變數名.
..
其中extern可以省去不寫,
而全域性變數的宣告出現在需要使用該外部變數的各個函式內,在整個函式內,可以出現多次,全域性變數的宣告一般形式為:
extern 型別說明符 變數名,變數名.
..
全域性變數在定義是已經分配了位址單元,並可作初始賦值。全域性變數的宣告不能在出現賦初始值,只是表明耀使用此變數。
3.變數的儲存方式
分為靜態儲存的動態儲存兩種。
靜態儲存通常是在變數定義時就分配一定的儲存空間,且一直保持不變,直至整個程式結束。
動態儲存是在程式的執行過程中,使用它時才分配的儲存單元。
由此可知,靜態儲存變數是一直存在的,而動態變數時而存在時而消失。
c語言中萃變數的儲存型別說明有以下四種:
2.typedef
typedef可稱為c語言的關鍵字,其作用是作為一種資料型別定義乙個新名字。
其基本用法如下:
typedef 資料型別 自定義資料型別
嵌入式開發中涉及可移植性的問題時,typedef就會非常引人注目了,通過tupedef可以為識別符號其乙個統一的名稱,這樣在對識別符號修改時,只需修改typedef的內容就可以了。
3.常量定義
(1)const常量定義
int
const a =
10;
以上語句定義了乙個整型常量a,其初始值為10,且不能被修改。
```c
intconst
* a;
int*
const a ;
第一條語句說明指標a指向的資料單元的內容是不能被改變的,而這個指標本身的位址是可以被改變的,而第二條語句正好相反。
(2)define定義常量
define實際是一條預處理指令,其實際用途遠大於定義常量這一功能
使用define定義常量實際是進行符號替換,其定義方法為:
#define 符號名 替換列表
在linux核心中,也廣泛使用define來定義常量。 嵌入式Linux c 基礎
資料型別 向計算機申請儲存資料的記憶體大小,如int 申請4位元組的大小。變數是用來儲存值的所在處,它們有名字和資料型別.變數的資料型別決定了如何將代表這些值的位儲存到計算機的記憶體中 試卷的筆記 電腦是x86 裸機是arm 編譯程式 gcc 和 arm linux gcc 字串表示 反斜槓要必須雙...
嵌入式LinuxC基礎 排序
1.排序的穩定性 只有含有相同元素才有穩定性。相同元素的相對位置發生變化,怎不穩定。相對位置不變,則穩定。2.直接插入排序 對於給定的一組記錄,初始時假定第乙個記錄自成乙個有序的序列,其餘的記錄為無序序列 接著從第二個記錄開始,按照記錄的大小依次將當前處理的記錄插入到其之前的有序序列中,直至最後乙個...
嵌入式LinuxC基礎 指標(一)
1.指標的算術運算 指標 整數,這類表示式的結果型別也是指標。指標 只有當兩個指標都指向同乙個陣列中的元素時,才允許從乙個指標減去另乙個指標。兩個指標相減的結果的型別是有符號的整數型。2.指標的關係運算 前提是他們指向同乙個陣列中的元素。3.間接引用 對於已說明的變數來說,變數名就是變數值的直接引用...