//1 不管是幾維數組,都是線性存儲的。所以會存在多維數組做函數參數,退化問題 //2 多維數組做函數參數 二維數組,能勉強表達出來。但是三維數組,四維數組,,就表達不出來了。 //結論:指針做函數參數,有效內存維數,只到2級。。如果你看到3級指針 4級指針,它表示的不是內存的維數 |
對維數組還書參數推演: |
int printf1Array(char buf[64]); int printf1Array(char buf[]); int printf1Array(char *buf);
int printf2Array(char myArray[10][30]) int printf2Array(char myArray[][30])//編譯器知道步長就可以了 int printf2Array(char (*myArray)[30]) |
三種內存模型 |
//指針數組 char *p1[] = {"123", "456", "789"}; //二維數組 char p2[3][4] = {"123", "456", "789"}; //手工二維內存 char **p3 = (char **)malloc(3 * sizeof(char *)); //int array[3]; |
|
//指針數組當函數參數的時候,指針數組會退化爲指針 需要把數組的個數傳給被調用函數。。。。。。 char* c_keyword[] = { "while", "case", "static", "do", //常量字符串的首地址是不是一個32位的數 0 //填寫一個零是不是應該,0 NULL '0' "0" '0'存的是ASCII碼,"0"存的是字符串首地址,當是’0’時,編譯器尋找地址爲十進制048的地方,如果不允許訪問則會宕機 };
//[] * 區別是 []只不過是編譯器幫我們做了一個*p操作而已。 |
多維數組
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.