二级指针及其内存模型初探


二级指针的三种内存模型

这里其实算是总结,具体的分别会在后面各章节中讲述。

第一种内存模型(指针数组)

char  *strArray[] = {"aaaa22222","bbbbb","ddddddd","ddddddss222"};

第二种内存模型(二维数组,数组指针)

char  strArray[10][30] = {"aaaa22222","bbbbb","ddddddd","ddddddss222"};

第三种内存模型(二级指针)

char  **strArray;

三种内存模型如下(下图是班上一student画的,在这里也可以做为一种理解吧)

 

如何理解 char *******s或 char *s?

1)  站在编译器的角度:s就是一个指针变量,只为其分配4个字节内存。

2)  站在在程序员的度

 

二级指针技术推演

数组参数

等效的指针参数

一维数组char a[5];

指针            char *a;

指针数组char *a[5];

指针的指针char **a;

二维数组char a[2][3];

数组指针    char (*a)[3];

 

void fun(int a[5])    →void fun(int a[])    →void fun(int* a);

void fun(int a[2][3]) →void fun(int a[][3]) →void fun(int (*a)[3]);

 

谨记:

概念不清晰是产生bug的根源。

如果你能深入做到技术推演,你就能写出优秀稳定的代码。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值