【C++】指针的一些问题Mark


翻了下以前的Blog,两年以前的了。当时还说每天练一点,慢慢熟悉,简直naive。


|双重指针**p

双重指针记得是说和二维数组一致,但是有点晕。搜集了一些资料,整理一下:

假如我有一个m×n维的数组array,想要对应到指针p、q、r上去:

int array[m][n];
int (*p)[n];
int **q;
int* r[m];

*r[m]好理解,r是一个m元的数组,每个元素是一个指针。

但是(*p)[n]不是很好理解为什么对应是[n]:在这里,p是一个指向数组的指针,指向的数组包含n个元素。相当于,p+1的地址,是在原有地址上增加整个n元数组的大小。


|指针*p和数组p[]到底有什么区别

给指针p分配内存是,new的是堆上的内存,而p[]是栈内存。数组是数组,指针是指针!

这就是为什么说:

char s1[]="123456";
char *s2 = "123456";
前者是运行时赋值,而后者是编译时就已经确定了(如果我没记错的话),是在静态区,因此也无法更改。

s2[0] = '3';

会报错。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值