嵌入式每日學習心得2017 07 20

2021-08-04 02:21:40 字數 3037 閱讀 9327

變數:程式語言對儲存單元的抽象

(1)變數名(name)

標識(2)位址(address)

儲存位置

(3)大小(size)

儲存空間

(4)型別(type)

值域和運算集

(5)值  (value)

內容(6)生存期(lifetime)

存在的時段

(7)作用域(scope)

作用範圍

記憶體中,每個位元組都有乙個編號,稱為位址。

指標變數:

在c語言中,記憶體單元的編號稱為指標,用來存放位址的變數,稱為指標變數

陣列1.陣列的定義:

具有一定順序關係的、相同資料型別的元素的集合。存放在一片連續的記憶體空間。

2.陣列分類(按維數分:)

一維陣列:a[9]

二維陣列:a[i][j]

一維陣列構成的陣列,按行i儲存的

多維陣列:a[i][j][k]...

int a[200]=;

3.陣列的賦值方式:

(1):在定義時一起賦值

a[200]=;

等效a=;

a[2][2]=;

等效a[2][2]=,};

等效a[2]=,};

定義陣列時賦值,一維陣列的空間大小可以省略

(2):在定義後逐個賦值

4.指標和陣列:

(1)陣列名就是陣列首元素的指標(它是乙個指標常量)

(2)資料元素的指標

(3)指標陣列

int a[200]

a[0]  a  

5.陣列的訪問:

(1)下標法:a[i][j]

(2)指標法:*(*(a+i)+j)

(3)混合法:*(a[i]+j)

注意陣列名和下標運算子的意義

陣列中的元素和單個變數是一樣的

陣列不要越界訪問!!!!

int a[10];

a[10]     //兩個10的意義,不一樣

字串(string):

一串字元,即若干個字元構成的乙個序列

c語言中沒有字串型別,只能用字元陣列表示字串,為了方便對字串的處理,c語言提供了很多簡化寫法

c語言規定,乙個合法的字串的最後乙個字元必須為'\0',即'\0'為字串結束標誌

在執行標準輸入(比如呼叫scanf或getchar)時,我們鍵入的字元在我們按下回車鍵後會進入標準輸入緩衝區中,scanf這些函式只是從這個緩衝區中取走相應型別的資料,如果呼叫函式時這個緩衝區中沒有任何資料,這些函式會等待使用者按鍵輸入;如果緩衝區中有資料,但不是scanf函式所期望型別的資料,那麼scanf函式就會立即失敗返回,否則會直接取走相應的資料,不會等待 

字元陣列

1.字元陣列:

陣列中元素的是字元型別。

2.初始化方式:

(1)逐個賦值

char ch[6];

ch[0]=h;

ch[1]=e;

ch[2]=l;

ch[3]=l;

ch[4]=o;

ch[5]=\0;

(2)用字串常量賦值

char ch[6]=;

char ch[6]="hello";

char ch="hello";

3.輸出方式:

(1)輸出逐個字元  %c

(2)輸出整個字串 %s

4.與字串處理相關的函式

#include

strcpy(字串拷貝) 

strncpy(字串拷貝,可以指定要拷貝的位元組數)

strcat(字串連線)

strlen(求字串長度,不包括'\0')

strcmp(比較兩個字串的大小,按字典順序,大小寫敏感), strncmp(比較兩個字串開頭的部分的大小,大小寫敏感)等

注意:strcpy,strncpy,strcat這些函式很危險,它們不會檢查越界訪問(只認『\0』),這個工作由呼叫者負責,一要保證目標緩衝區(buffer)大小充足

緩衝區(buffer):一塊記憶體空間

陣列分贓

int a[4][3][2][2]=;

4*3*2=24 個元素

a[0]:  3*2=6 個元素

a[0][0] : 2 個元素

,,},,{},{}}

a[0]:

3*2*2

a[0][0]:

2*2a[0][0][0]:

2指標與陣列

1.指標陣列

指標的陣列,陣列中的元素,是指標變數。

int* a[5];

《資料型別*>  《變數名》

int*

a2.陣列指標

陣列的指標,佔4個位元組,指向乙個陣列。

int (*a)[5];

《資料型別》  《變數》  

int a[i][j][k]  int a[j][k]=

int (*a)[j][k]

3.指標的指標

指向指標(位址)的指標變數。

int **p;

4.const與指標

(1)常量指標:指標指向的是常量。

位址指向的內容,不可改;存放的位址,可以改。

const char* p  <==>  char const *p

(2)指標常量:指標本身是常量。

位址指向的內容,可改;存放的位址,不可改。

char* const p=??? //必須在定義時,就初始化(存放位址)

(3)常量指標常量:指標本身是常量,它指向的也是常量

const char* const p;

記憶方法:

const :常量

*   :指標

去掉 《型別char> 和 《變數名p>,再讀

陣列在函式與函式間的傳遞

(1)複製傳遞

int zmx(int a,int size)

(2)位址傳遞

int zmx(int *a,int size)

注意:複製傳遞和位址傳遞,只是形參的說明形式不同;陣列名實際上,也是乙個指標變數。因此,兩種方式,效果完全相同。

嵌入式每日學習心得2017 07 08

linux系統管理技術 linux系統的使用方式 1 桌面環境操作 傻瓜化,但功能不夠強大,某些操作效率很低甚至無法完成 2 shell命令 專業高效,但非常不直觀友好,學習難度大,需要記憶命令 要成為unix linux系統骨灰級玩家,必須常用掌握shell命令!常用的桌面環境 gnome kde...

嵌入式每日學習心得2017 07 10

對於linux相關命令,再次作一點總結,今天是上半部分,明天是下半部分 關於布置的小問題 問題1更改使用者名稱 usermod l newusername username 問題2更改主機名 hostname newname vi etc sysconfig network 問題3su和su 的區別...

嵌入式每日學習心得2017 07 13

進製 表數方式,是幾進製,就逢幾進一 十進位制 逢十進一 9 0 123 10 百 十 個 1 3 0 二進位制 逢二進一 1 0 2 八進位制 逢八進一 7 0 0123 八 十 3 8 0 2 8 1 1 8 2 八 二 001 010 011 十六進製制 逢十六進一 f a 9 0 0x321...