invalid conversion from 'char' to 'char*' [-fpermissive]
时间: 2023-06-20 17:03:24 浏览: 55
这个错误通常出现在将一个字符类型的变量直接赋值给字符指针类型的变量时。这样做是不正确的,因为字符指针类型的变量需要存储字符数组的地址,而不是单个字符的值。你可以使用以下方法来解决这个问题:
1. 将字符类型的变量赋值给一个字符数组,然后再将该数组的地址赋值给字符指针类型的变量。
```
char c = 'a';
char str[2] = {c,'\0'};
char* ptr = str;
```
2. 将字符类型的变量强制转换为字符指针类型。
```
char c = 'a';
char* ptr = (char*)(&c);
```
需要注意的是,第二种方法可能会导致指针访问非法内存地址,因此应该谨慎使用。
相关问题
[Error] invalid conversion from void* to char** [-fpermissive]
这个错误通常是由于将 `void*` 类型的指针直接赋值给 `char**` 类型的指针导致的。因为 `void*` 类型的指针可以指向任何类型的数据,而 `char**` 类型的指针只能指向 `char*` 类型的指针。
要解决这个问题,你需要先将 `void*` 类型的指针转换为 `char*` 类型的指针,然后再将其赋值给 `char**` 类型的指针。例如:
```c++
void* data = get_data();
char* char_data = static_cast<char*>(data);
char** char_ptr = &char_data;
```
这样就可以将 `void*` 类型的指针 `data` 转换为 `char**` 类型的指针 `char_ptr` 了。注意,这里使用了 `static_cast` 进行类型转换,如果你不确定类型转换是否安全,可以使用 `dynamic_cast` 进行安全的类型转换。
invalid conversion from char yo const char*
这个错误通常表示你在代码中将一个字符转换为了一个常量字符指针。这通常发生在你试图将一个单个字符赋值给一个字符串变量时。
例如,如果你写了以下代码:
```
char c = 'a';
const char* str = c;
```
你会得到这个错误,因为你试图将一个字符赋值给一个常量字符指针。要解决这个问题,你可以将字符包装在一个字符串中,或者将字符指针转换为一个字符串指针,例如:
```
char c = 'a';
const char* str = "a";
```
或者
```
char c = 'a';
const char* str = &c;
```
这将使代码能够正确地编译。