首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >char[]与&char[]?

char[]与&char[]?
EN

Stack Overflow用户
提问于 2017-08-10 16:45:46
回答 1查看 315关注 0票数 4

我正在努力更好地理解&操作符(地址-of),以便在API中使用。

下面是我的API函数签名示例:

代码语言:javascript
复制
apiFunction(const int*)

我正在处理其他人的代码,他们正在使用API,如下所示:

代码语言:javascript
复制
int inputs[1] = {1};
apiFunction((const int*)&inputs);

我认为正确的用法应该是:

代码语言:javascript
复制
int inputs[1] = {1};
apiFunction(inputs);

当“输入”是长度为1的字符数组时,“输入”和“&inputs”之间是否有区别?

当我做printf时,它们看起来是一样的,但我担心可能是格式化错误:

代码语言:javascript
复制
printf("%p, %p", inputs, (const int*)&inputs);

产出(例如):

代码语言:javascript
复制
0204DE94 0204DE94
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-10 16:54:42

表达式&input具有int (*)[1]类型,即指向大小为1的数组的指针。这与input相反,后者(在大多数上下文中)衰变为指向第一个元素的指针,并具有int *类型。

虽然数组的地址和第一个元素的地址是相同的,但是当应用指针算法时,每个元素的类型的差异就会起作用。

apiFunction的上下文中,您可以通过传递&input (使用强制转换)或input,因为两者都具有相同的值,这样就可以避免传递&input。然而,后者是这样做的适当方式:

代码语言:javascript
复制
apiFunction(inputs);

因此,您发现的代码没有正确地传递参数是正确的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45619318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档