指標筆記 2

2021-09-27 09:37:03 字數 1318 閱讀 5190

指標變數和一維陣列

1.靜態分配記憶體: 一維陣列和指標變數

1.1確定一維陣列需要兩個引數:陣列裡面存放的個數和陣列的長度

**注意:*陣列名存放的是陣列的首位址,所以若 int a[5]; int p;則

可以寫成 *p =a[0];

#include

voidf(

int* parr,

int len)

}int

main()

;f(a,5);

return0;

}

這樣的定義方法必須事先定義好陣列的個數和長度且不能改變。所以出現了動態記憶體分配

2 動態記憶體分配和一維陣列

2.1 知識點

1.動態記憶體和靜態記憶體的比較:

靜態記憶體是由系統自動分配,由系統自動釋放的,

靜態記憶體是在棧中分配

動態記憶體是由程式設計師手動分配,手動釋放

動態記憶體是在堆中分配的

2. 傳統陣列的缺點

1. 陣列的長度必須事先指定,且只能是常整數,不能是變數

// 即靜態陣列 例子:int a[5];正確 但是 int len=5; int a[len];錯誤,因為陣列的長度不能是乙個變數

2. 傳統形式定義的陣列,該陣列的記憶體程式設計師無法手動釋放,陣列一旦定義,系統為該陣列分配的儲存空間就會一直存在,

除非陣列所在的函式執行結束,在乙個函式執行期間,系統為該函式中陣列所分配的 間,系統為該函式中陣列所分配的空間會一直存在,直到該函式執行完畢時,陣列的空間才會釋放

3.陣列的長度不能在函式執行中,動態的擴充或縮小

4.a函式定義的陣列,在a函式執行期間可以被其他函式使用,但a函式執行完畢之後,a函式中的陣列將無法被其他函式使用

3.所需要的函式和標頭檔案

函式:(資料型別*)malloc(長度) 例如:p = (int*)malloc(4);

標頭檔案: #include

#include

#include

//動態記憶體分配時必須包含

intmain()

//對一維陣列進行輸出

for(i =

0; i < len; i++

)return0;

}

補充自己的弱智c問題: scanf("%d\n",&a)輸入函式,

C 學習筆記 指標2

關於指標形參的注意事項 不要企圖通過改變指標形參的值而使指標實參的值改變,看下面的 include void swap int p1,int p2 int main int a 5,b 9 int pa,pb pa a pb b if a b swap pa,pb std cout a b 要想輸入...

筆記 2 智慧型指標

原生指標是一款很強大的工具,但是依據進數十年的經驗,可以確定的一點是 稍有不慎,這 個工具就會反噬它的使用者。c 11標準中規定了四個智慧型指標 std auto ptr,std unique ptr,std shared ptr,std weak ptr.他們都是用來輔助管理動態分配物件的宣告週期...

C指標 複習筆記2

1.void 可以定義變數 void p p的型別為void 而void 指標型別,32為平台4位元組 p叫萬能指標 p可以儲存 任意一級指標 char ch p ch 型別 char int num p 型別 int float f p f 型別 flaot p操作,需對p進行強制型別轉換 voi...