變數:程式語言對儲存單元的抽象
(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...