//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操作而已。 |
多维数组
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.