指標變數和一維陣列
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...