作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在处理指针时遇到了一个问题。到目前为止,我知道当我们创建任何数据类型的数组时,数组的名称实际上是一个指向数组第一个索引的指针(可能是静态指针)。对吗?
所以我想要实现的是创建另一个指针,它可以保存数组名称的地址(即指向另一个指针的指针,在我的例子中是数组名称)
例如:
char name[] = "ABCD"; // name holding the address of name[0]
char *ptr1 = name; // When this is possible
char **ptr2 = &name; // Why not this. It give me error that cannot convert char(*)[5] to char**
我将代码块用作 IDE。
最佳答案
TL;DR 数组不是指针。
在您的代码中,&name
是指向 5 个 char
的数组 的指针。这与指向 char
的指针不同。您需要将代码更改为
char (*ptr2)[5] = &name;
或者,
char (*ptr2)[sizeof(name)] = &name;
FWIW,在某些情况下(例如,将数组作为函数参数传递),数组名称衰减为指向数组中第一个元素的指针。
关于c++ - 数组的地址 VS 指针到指针 : Not the same?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35637750/
我是一名优秀的程序员,十分优秀!