char str[10] = "162";char str1[20];memcpy(str1,&(atoi(str)),1);这种写法总是报错 error C2102: “&”要求左值
当然如果设置一个变量来保存 int i = atoi(str);把参数替换是可以的。但是这样的写法显得代码就太多了。而且atoi返回的参数是个int型,我想知道这种用法为什么错了,如果我要这样,应该怎样才实现
int i = 20; memcpy(str1,&i,1);这样的用法可以,我想知道为什么memcpy(str1,&(atoi(str)),1);不可以
因为 atoi 是函数,函数的返回值是右值,不能取地址的。只有左值才能取地址。
可以这么理解,这个返回值可能是存放在寄存器中的,那么取地址有意义吗?
您是想将str的内容copy到str1中吗?直接memcpy(str1, &str, sizeof(str));就可以了