嵌入式c語言 學習筆記

2021-10-19 01:23:49 字數 1977 閱讀 3585

最普通的指標:int *a;

呼叫形式:

1、a——a指向的物件的位址

2、a——a指向的物件的值

3、&a——a自身的位址

常用來作為引數,呼叫陣列,加上乙個說明陣列的長度的,從而獲取不定大小的陣列

第二種:

int a[n] //指標陣列,包含n個整型指標

對應地:

int (*a)[n] //陣列指標,指向大小為n的陣列

嵌入式程式設計中常見對暫存器進行讀寫的:

特別的:

*(int*)(addr)  //addr為位址,通常形式為0x00d0f110(具體位數看晶元而定);
陣列和指標:

int num=
陣列其實在記憶體中就是一段連續儲存的記憶體區域

陣列的首位址,int *ptr=&num[0]或者int *ptr=num

char str1=「hello」 它的長度是5+隱藏的"\0" ,是6

char *ptr=str1;

指標的移動和減法:

只有同型別的指標相加減才有意義

指標相減代表計算兩個指標的距離,比如相距20個位元組,int型別,就是20/4=5

int num=

int p=num;

p[3]=等價於=(p+3)

指標的用法:實現乙個函式有多個返回值的效果

指標變數:

指標隱含兩種東西:乙個是指標變數,乙個是指標常量。但是大多數情況下,指標都是指代的指標變數。

指標變數和普通變數相同,都是用於儲存資料的,只是指標變數存放的資料很特殊,是記憶體位址。一般情況下,如果不考慮指標強制轉換的話,我們要求某個型別的位址必須放到對應的型別的指標變數中。

例如:

int a = 10;

int *p = &a;

指標變數的型別作用:

對於指標變數來說,其型別是由普通型別+星號構成。星號的個數表明了指標變數的級數,指標變數用來儲存位址,有如下對應關係:

1、某型別一級指標變數 = 該型別一級位址

2、某型別二級指標變數 = &(該型別以及位址)

3、n+1級指標變數 = &(n級指標變數)

需要注意的是計數超過三的時候,會降低空間的訪問速度,所以過高階的指標變數是沒有太大意義。

訪問結構體成員的基本方法有兩種:

1、定義乙個結構體變數直接訪問成員變數;

2、定義乙個結構體指標變數間接訪問結構體變數。

(1) 結構體變數訪問:

tsci  sci1;

sci1.data [ sci1.pos++]= num;

(2) 結構體指標變數訪問:

tsci   *sci2,b;

sci2= &b; //指標變數必須初始化 指向乙個結構體變數

sci2->data[sci2->pos++] = num;

(3)(*sci1).data    sci2->data   效果等效

例子:

#include struct stu

;struct data;

int add(struct stu *ss1, struct stu *ss2)

int main()

注意點:

1.定義結構體指標後,一定要給它分配空間,有兩種方式,一種死malloc,另一種是用乙個結構體變數的位址給他賦值。

2.通過結構體指標訪問接頭體成員,用->;通過結構體變數訪問成員,用.;並且優先順序:.高於*。

3.作為函式引數時,要分清指標還是變數。要是指標就直接傳入,要是變數就取位址&。

嵌入式C語言 學習筆記

一 位運算 符號運算規則 與 兩個位都為1時,結果才為1 從真假方面看,只有當兩個位都為真時,結果才為真 或 兩個位都為0時,結果才為0 從真假方面看,如果兩個運算物件中相應的乙個位為真或者兩個位都為真,那麼結果為真 異或 兩個位相同為0,相異為1 從真假方面看,如果兩個運算物件中相應的乙個位為真且...

嵌入式C語言學習筆記2

1.資料型別基本型別 整型 signed short int long long long 考慮整數長度?unsigned 字元型 char 有符號,無符號 實型 float double 列舉型 enum 1 bool布林型別 邏輯型別 true false 真和假 例一 int main els...

嵌入式C語言學習(二)

c語音基礎 1.函式 形參與實參 函式呼叫 區域性變數和全域性變數 extern 動態儲存變數和靜態儲存變數 static 內部函式 定義加static 和外部函式 定義和使用時加extern 2.預編譯處理 2.1巨集定義 define 識別符號 字串 巨集名用大寫 巨集定義不是語句,不加分號 巨...