char** ?char* ?

来源:互联网 发布:淘宝精品推荐女装 编辑:程序博客网 时间:2024/05/17 07:33

char**是指向char*的指针,而char*是一个int长度的数据,你声明了它,那么这个int型的数据便会有地址,而char**就是这个数据的地址。

首先你理解一下,为什么 char* 某些时候可以和 char[]等价呢?因为 char*指向的 a,实际上是 a[0]。所以 a 相当于 &a[0],它可以赋给 char*

但是char*只不过是 &a[0]罢了。和 char a[]是两回事儿,后者表示的是一块连续内存。

那么 &a 是什么东西?

我们已经知道了 a 是指 &a[0],是a[0]的地址,是一个int长度的数据。那么 &a 就是说,把这个数据当做了内存在某一块存在的数据,取这个数据的地址。

那么这个数据在内存中真的存在吗?不一定!

比如说 &a[0] 值为 0x3affffff,那么内存中一定存在某一块空间,里面的内容是 0x3affffff吗?不会!

所以 &a 是非法的!

所以,你使用 &a 本身就是非法的。


参考:

《关于 const * 的问题》

原创粉丝点击