嵌入式C語言陣列,str函式實現

2021-10-17 23:13:44 字數 2705 閱讀 5254

陣列中所有的資料都是相同的資料型別 int a[10]=

陣列中的元素的首位址都是連續的 a[0]=0x0000;a[1]=0x0004(位數跟資料型別有關)

c語言不允許使用變數的值進行動態定義,

賦初值的方式:

在定義時賦值;

迴圈賦值

陣列與指標的聯絡:

陣列的名字是可以當成指標使用的 (a:陣列首元素的位址)

陣列作為函式引數被傳遞的時候,陣列名會被弱化成指標

#include

void fun(int a[10])

int main()

;printf("%d\n",sizeof(a));//計算整個陣列的大小

printf("%d\n",sizeof(*a));//計算a[0]的大小

printf("%d\n",sizeof(&a));//計算指標的記憶體大小

fun(a);}`

a = &a[0] a+1=&a[1]

&a表示整個陣列的首位址 &a+1越過這個陣列的下乙個位址

#include

intmain()

return0;

}

進行字串計算時,需要留夠字元陣列的空間,否則會顯示錯誤

:是對兩個字串的逐個字元進行比較。

int

mycmp

(char

* str1,

char

* str2)

while(1

)if(!c1&&

!c2)

break;}

return0;

}

:是把所指向的字元du串(包括「\0」)複製到dest所指向的字串後面(刪除原先字串的\0」)下面將str2複製到str1後面

void

mycat

(char

* str1,

char

* str2)

else

*(str1+len1+len2)

='\0';}

}

將後面的字串複製到前面

void

mycpy

(char

*str1,

char

* str2)

else

*(str1+len)

='\0';}

}

輸出乙個字串長度,不包含』/0『

int

mylen

(char

*str)

while

(*tmp !=

'\0'

)return count;

}

本質是乙個陣列

每個指標指向的記憶體是連續的

每個指標的本身的位址也是連續的

#include

intmain()

結果sut

jj:**(

&s[0]+

1)-*

*(&s[1])

-*s[1]

-取s的首個元素位址的值j

本質是乙個二級指標

#include

intmain()

;int

(*p)[6

];p=

&a;printf

("%d\n",*

(*p+1)

);}結果:2

是乙個指標,指向函式

#include

void

function

(int i,

double d)

//乙個函式的宣告

void

anotherfunction

(int i,

double d)

//另外乙個函式宣告

intmain()

結果函式執行,10,

10.101000

又乙個函式執行,20,

20.202000

帶有指標的函式,即其本質是乙個函式,只不過這種函式返回的是乙個對應型別的位址。指標指向的不能是全域性變數

#include

int*

getdate()

;int

*aaa

(int

,int);

//函式返回的是乙個位址值,經常使用在返回陣列的某一元素位址上。

int*

getdate

(int wk,

int dy)

;int

main()

while

(wk<

1||wk>

5||dy<

1||dy>7)

;printf

("%d\n",*

getdate

(wk,dy));

}int

*getdate

(int wk,

int dy),,

,,};

return

&calendar[wk-1]

[dy-1]

;} 結果enter week(1

-5)day(1

-7)4

324

嵌入式學習(二) 嵌入式系統C 語言

1 從 cpu 復位時的指定位址開始執行 2 跳轉至彙編 startup 處執行 3 跳轉至使用者主程式 main 執行,在 main 中完成 a.初試化各硬體裝置 b.初始化各軟體模組 c.進入死迴圈 無限迴圈 d呼叫各模組的處理函式 下面是幾個 著名 的死迴圈 1 作業系統是死迴圈 2 win3...

嵌入式C語言總結

這幾天花了兩天時間看了一些嵌入式c語言方面的內容,以下是一些讀書筆記,記錄一下。1 不能有返回值 2 不能向isr 傳遞引數 3 isr盡可能的短 4 printf有重入問題 1 中斷服務程式isr 2 硬體初始化 1 某io 晶元被定為在 cpu的儲存空間而非 io空間,而且暫存器對應於某特定位址...

嵌入式c語言優化

一.演算法和資料結構優化 1.針對應用的演算法優化,比如,在音訊編譯碼中,用fft實現時頻變換。2.c語言級別的優化,如排序演算法的選擇。3.資料結構的選擇,如果需要隨機訪問,則盡量選擇陣列,如果需要隨機插入刪除,則可以選擇鍊錶。4.盡量用指標代替資料操作,大部分編譯對於指標會生成更小更快的 5.盡...