多维数组

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

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