dim*_*yak 5 c++ arrays pointers char
为什么这是可能的:
char buf[10], *pbuf = buf, **ppbuf = &pbuf;
Run Code Online (Sandbox Code Playgroud)
这不是:
char buf[10], **ppbuf = &buf;
Run Code Online (Sandbox Code Playgroud)
据我所知,第二行只是第一行的简写.
他们不等同.
*pbuf = buf
Run Code Online (Sandbox Code Playgroud)
这意味着," pbuf
是一个指向类型的指针char
,其值是地址buf
." 由于buf
是一个字符数组,这是有效的.
**ppbuf = &pbuf
Run Code Online (Sandbox Code Playgroud)
这意味着," ppbuf
是一个指向类型指针的指针char
,其值是地址pbuf
." 既然pbuf
是指向类型的指针char
,这是有效的.
**ppbuf = &buf
Run Code Online (Sandbox Code Playgroud)
这意味着," ppbuf
是一个指向类型指针的指针char
,其值是地址buf
." 由于buf
是一个字符数组,这失败了.
&buf
类型错误。&buf
是一个指向 10 数组的指针char
。ppbuf
必须使用指向 a 的指针进行初始化char
。
在第一次初始化中, whilebuf
表示一个数组,它衰减为char*
指向其第一个元素,因此初始化是有效的。
你也不能这样做:char buf[10], **ppbuf = &(&buf[0]);
因为&buf[0]
不是左值,所以你不能获取它的地址。