c - 错误:需要左值作为一元“&”操作数,我已经看到了解决方案,但我无法将它们与我的查询相关联
问题描述
&(name+0)
我可以通过替换&name[0]
或只是轻松删除此错误name
,但为什么我收到此错误?
#include<stdio.h>
#include<string.h>
void print(char *c)
{
while(*c != '\0')
{
printf("%c",*c);
c++;
}
printf("\n");
}
int main(void)
{
char name[]="Hello World!";
print(&(name+0)); //ERROR here
return 0;
}
解决方案
用于
print(&(name+0)); //ERROR here
似乎是某种误会的结果。
首先要做的事情 - 为什么它是一个语法错误?
(name + 0)
不计算为左值。因此,您不能获取该表达式值的地址。
判断某事物是否为左值的一种简单方法是问自己:我可以在赋值运算符的 LHS 上使用它吗?在您的情况下,您必须问:我可以使用
(name + 0) = <something>;
答案是不”。
如果要传递 to 的第一个元素的地址name
,print
可以使用几种方法。
print(&(name[0])); // Explicitly get the first element's address.
print(name); // The array decays to the address of the first element.
推荐阅读
- android - 条形码中的产品详细信息
- java - Here-API:PDE 请求返回 GeoboundingBox 之外的 POI
- c - 使用结构获取垃圾数据进行重新分配
- amazon-web-services - AWS 简单 Lambda 函数
- python - 如何将多个值从异步函数返回到同步上下文?
- c# - 我想做一个随机的数学问题,但我不能做超过 18 个数字的答案
- android - 到 recyclerview 的 Firebase 数据显示错误 - RecyclerView:android 中没有附加适配器
- nativescript-angular - 运行 nativescript 时出现错误
- xamarin - 有人可以澄清在获取屏幕数据时使用 MVVM 模式时我应该在哪里放置代码吗?
- asp.net - 使用 Angular 从 webapi 中检索单个值