一、陣列的定義及使用及分類
1、陣列是用來存放一組資料的,而因為存放的資料可以分為不同種類,陣列也分為不同種:int,
float,double ,char......
2、定義陣列的方式和定義乙個變數相似,都是資料型別+陣列名
(變數名),陣列長度可寫可不寫;在定義陣列時如給予一定的長度,一定要分配足夠的記憶體空間,確保所儲存的資料不會
越界(陣列越界將會使用非法記憶體導致危險);
3、在一維陣列名arr,表示整個陣列時只有如下情況:
(1)為防止陣列長度判斷出錯時,在定義陣列的同一函式中可以用len=sizeof(arr)/sizeof(arr[0])來求出陣列長度;
(2)在定義陣列的同乙個函式中,&arr+1,加整個陣列的大小
(3)而在其他情況中,陣列名代表的首元素的位址
4、在被呼叫函式中,形引數組被退化成指標(在本質上:陣列在形參中已經是指標),同時在傳遞陣列時同時需要傳遞陣列長度(字串陣列除外,因為在字串陣列中有明顯的『\0
』標誌作為結束標誌)
5、使用陣列的方式陣列名[下標
]=,下標是從
0開始的,
在定義陣列中陣列名[len];
二、指標
1、指標通俗的講就是位址
int *p=&a//定義乙個整型指標,將整型位址值放入整型指標變數中
(*的第一作用:在定義中起到說明是指標)
*p=100//將
a的值賦值為
100(*的第二作用:解引用,通俗講就是間接訪問符)
int **pp=&p//定義乙個二級指標,(就是定義乙個指標變數存放之前指標
p的位址)
**pp=100//通過倆次解引用將
a的值賦值為
100int ***ppp=&pp//定義乙個**指標,(就是定義乙個指標變數存放之前指標
pp的位址)
***ppp=100//通過三次解引用將
a的值賦值為
100;
2、指標分配的記憶體空間
指標的記憶體空間由平台決定,與資料型別無關,所以資料型別不影響指標的記憶體空間大小
cpu->os->編譯器
(每乙個都是由它前乙個所決定,呈金字塔型)
32(64
)位操作平台:指標4(
8)個位元組
3、指標的運算
(1)p++:是指加的乙個單元格(而單元格由資料型別決定),所以指標運算需要調整權重(調整權重即為去掉乙個*,求
sizeof
)(2)
指標—指標=
相差多少個單元格(調整權重)
(3)其他指標運算不存在,且指標的運算都需要調整權重
int arr[10];
int *q = &arr[9];//x+36
int *p= &arr[1];//x+4
printf("%d\n",q-p);//8
printf("%d\n",(char *)q-(char *)p);//32
printf("%d\n",(short **)q-(short **)p);//8
printf("%d\n",(double *)q-(double *)p);//4
printf("%d\n",(unsigned long long)q-(unsigned long long)p);//32
int *p = (int *)0x2010;
printf("%x\n",p-2);//2008
printf("%x\n",(char *)p-2);//200e
printf("%x\n",(short *)p-2);//200c
printf("%x\n",(double *)p-2);//2000
printf("%x\n",(char ***)p-2);//2008
printf("%x\n",(unsigned long)p-2);//200e
int *p = (int *)100;
printf("%d\n",p+4);//100+4*sizeof(int)=116
printf("%d\n",(char *)p+4);//104
printf("%d\n",(short *)p+4);//108,
printf("%d\n",(double *)p+4);//132
printf("%d\n",(char **)p+4);//116
printf("%d\n",(double ***)p+4);//116
printf("%d\n",(long long)p+4);//104
系統呼叫和訊號 吃魚的小臉貓 新浪部落格
一 系統呼叫 1 檔案描述符 每個程序在pcb中都儲存著乙份檔案描述表,檔案描述符即為該錶 的索引 核心利用檔案描述符來訪問檔案,當開啟 讀 寫乙個檔案時,核心就會返回乙個檔案 描述符 檔案描述符是乙個非父負整數 2 系統呼叫 1 實現在核心中,通過介面來接受,而不是通過呼叫,讓 在核心中執行,即核...
函式預設值和內聯函式 吃魚的小臉貓 新浪部落格
一 函式預設值 1.定義 我們可以賦予函式引數預設值。所謂預設值就是在呼叫時,可以不寫某些引數的值,編譯器會自動把預設值傳遞給呼叫語句中。預設值可以在宣告或定義中 設定 也可在宣告或定義時都設定,都設定時要求預設值是相同的。2.函式預設值的特性 1 預設引數在函式宣告中提供,當又有宣告又有定義時,定...
2023年03月08日 吃魚的小臉貓 新浪部落格
一 函式指標 顧名思義 指向函式的指標 int p int,int p max true printf d p 20,10 printf d p 20,10 false printf d p 20,10 補充 arr和 arr的數值相同,但含義不同 arr 陣列名可表示陣列的首位址,1 的是陣列單個...