在非常简单的代码上从“char”到“char*”的转换无效
invalid conversion from ‘char’ to ‘char*’ on very simple code?
#include <iostream>
int main(){
char* x= 'x';
return 0;
}
为什么这个简单的代码会给出这个错误?
error: invalid conversion from ‘char’ to ‘char*’ [-fpermissive]
char* x= 'x';
是否可以让指针指向包含单个字符文本的地址?我问这个问题对吗?
为什么这个简单的代码会给出这个错误?
因为C++不允许从char
转换为char*
.这就是神秘错误消息的含义。
是否可以让指针指向包含单个字符文本的地址?
不,C++不允许采用右值的地址(但某些编译器可能会将其作为"扩展"提供)。但是您可以获取char
左值的地址。例如
char x = 'x';
char* p = &x; // pointer to a single char. NOT a null terminated string.
我问这个问题对吗?
不。
您的声明说变量 (x) 是指向字符的指针。 指针是对内存位置的引用。 然后,您尝试将字符"x"分配给指针变量。 编译器抱怨您正在尝试分配两个不同的东西。 就像老妇人=青蛙一样,这没有意义。
您更可能想要的是以下几级的东西:
char x = 'x';
也就是说,为字符变量 x 分配文字字母"x"的 ascii 值。
除非你将"x"存储在某个地方,否则你不能获取它的地址并将其分配给 char* 指针。
char _x = 'x';
char* x = &_x;
这将是解决方案。
你必须先让'x'成为一个变量。
相关文章:
- 将 const 转换为 const char* 无效,我该如何解决?使用 gcc7 时失败
- 类型"int"和"const char [15]"到二进制"运算符<<"的无效操作数^
- 错误:从'void*'到'const uint8_t* {aka const unsigned char*}'的转换无效 [-允许]
- 错误:从 'char' 到 'const char' [-允许] strcat(加密,密钥[i])的转换无效;
- C++ - 从 "int" 到 "unsigned char" 的缩小转换无效
- 错误:AES 加密密钥:从"char*"到"无符号字符"的转换无效
- 无法确定为什么函数调用中从 char* 到 char 的无效转换
- 我收到一个错误无效的操作数,类型为 const char [42] 和二进制"运算符+"的双倍数
- 在 sprintf 中从 'signed char*' 到 'char*' 的转换无效
- 在这个简单函数中从'char'到'const char*'的无效转换
- 'const char [26]' 和 'LPSTR ' 类型的无效操作数
- C++从 'const char*' 到 'char*' Arduino Uno 的无效转换
- 如何修复C++中的"错误:从'int'到'const char*'[-fallowive]的无效转换?
- 将文本文件读取为 const char* 有时有效,有时无效
- C++:"错误:类型'const char*'和'const char [28]'的操作数无效到二进制'ope
- C++错误:从"char"到"const char*"的转换无效[-允许]
- 从'const char**'到'char* const*'的转换无效
- 从 'char' 到 'char*' strcat 函数的转换无效
- 使用表达式初始化char*无效
- 简单的 int 到字符串转换..int to const char* 无效