多維數組

//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操作而已。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章