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]不是左值,所以你不能获取它的地址。