c - 在 C 中,给定 char *ptr 并定义直到 ptr+n,当我尝试类似于 (ptr+i) = (ptr+j); 的语句时 我,j
在编译下面给出的代码时,我得到了错误: lvalue required as left operand of assignment for both statementsstr+i = s
问题描述
在编译下面给出的代码时,我得到了错误: lvalue required as left operand of assignment for both statementsstr+i = str+((len-1)-i);
和str+((len-1)-i) = temp;
.
为什么?
char* str_reverse(char *str, int len)
{
char *temp;
int i, mid;
if(len%2 == 0)
{
mid = len/2 - 1;
}
else
{
mid = (len-1)/2;
}
for(i=0;i<mid;i++)
{
temp = str+i;
str+i = str+((len-1)-i);
str+((len-1)-i) = temp;
}
return str;
}
str
是一个左值,因为它是内存中包含地址的地方。
str+i
只是一个右值,因为它只是一个地址
解决方案
str
是一个左值,因为它是内存中包含地址的地方。
str+i
只是一个右值,因为它只是一个地址
推荐阅读
- python - Python:替换 PDF 中的图像
- html - 文本显示在我的 html 页面的侧边栏后面
- python - 如何使用 Flask 显示动画情节
- angular - .net core 5 Web Api 会话如何与 Angular 配合使用?
- html - angular2 - 从表单中获取未定义
- apache-nifi - 使用 Apache NiFi 订阅 HTTP 流
- javascript - 重构三元运算符
- python - Django 数据质量监控:基于设置文件“构建”查询的最佳方法?
- python - 你如何制作一个程序来检测数组中的一个单词是否是异形?那会将其输出为真假?
- sparse-matrix - Numba 是否支持“multi_dot”方面的多个字典乘法?
在编译下面给出的代码时,我得到了错误: lvalue required as left operand of assignment for both statementsstr+i = s
问题描述
在编译下面给出的代码时,我得到了错误: lvalue required as left operand of assignment for both statementsstr+i = str+((len-1)-i);
和str+((len-1)-i) = temp;
.
为什么?
char* str_reverse(char *str, int len)
{
char *temp;
int i, mid;
if(len%2 == 0)
{
mid = len/2 - 1;
}
else
{
mid = (len-1)/2;
}
for(i=0;i<mid;i++)
{
temp = str+i;
str+i = str+((len-1)-i);
str+((len-1)-i) = temp;
}
return str;
}
str
是一个左值,因为它是内存中包含地址的地方。
str+i
只是一个右值,因为它只是一个地址
解决方案
str
是一个左值,因为它是内存中包含地址的地方。
str+i
只是一个右值,因为它只是一个地址
推荐阅读
- python - Python:替换 PDF 中的图像
- html - 文本显示在我的 html 页面的侧边栏后面
- python - 如何使用 Flask 显示动画情节
- angular - .net core 5 Web Api 会话如何与 Angular 配合使用?
- html - angular2 - 从表单中获取未定义
- apache-nifi - 使用 Apache NiFi 订阅 HTTP 流
- javascript - 重构三元运算符
- python - Django 数据质量监控:基于设置文件“构建”查询的最佳方法?
- python - 你如何制作一个程序来检测数组中的一个单词是否是异形?那会将其输出为真假?
- sparse-matrix - Numba 是否支持“multi_dot”方面的多个字典乘法?