从 ‘char*’ 到 ‘char’ 的无效转换 [-fpermissive] 如何打印?但在变量内部

Posted

技术标签:

【中文标题】从 ‘char*’ 到 ‘char’ 的无效转换 [-fpermissive] 如何打印?但在变量内部【英文标题】:invalid conversion from ‘char*’ to ‘char’ [-fpermissive] How to print?? But inside the variable 【发布时间】:2020-06-15 08:24:23 【问题描述】:
struct student
    char name[30]...
;

struct element

    struct element *ant;
    struct student databse;
    struct element *prox;
;
Element *no = *pointer_to_pointer;

cout<< (*no).datbase.name << endl;

我的名字打印正确。

Element *no = *pointer_to_pointer;

char variable = (*no).datbase.name;
    cout<< variable << endl;

错误。为什么?如何打印?但是在 variable 里面。谢谢。

【问题讨论】:

您正在将 (*no).datbase.name 转换为您上次 sn-p 中的字符。改用:char* variable = (*no).datbase.name;。如果你想从名字中获取一个字符,你应该像这样索引名字:char variable = (*no).datbase.name[0]; 【参考方案1】:

您正在尝试将 char 数组 name 转换为单个 char,这不起作用,这些类型不兼容。

如果你想使用name的内容,你应该使用:

const char* variable = (*no).datbase.name;
std::cout << variable << std::endl;

如果您想在 name 字符数组中建立索引,请使用 [] 对其进行索引,如下所示:

/* Take first character of name */
char variable = (*no).datbase.name[0];
std::cout << variable << std::endl;

【讨论】:

【参考方案2】:

datbase.name 的类型是char[],这意味着您不能直接将其分配给char 变量。请改用char *variable

char *variable = (*no).datbase.name;
    cout<< variable << endl;

如果您只想打印一个character,请写:

char variable = (*no).datbase.name[0]; //the first character of 'name'

【讨论】:

以上是关于从 ‘char*’ 到 ‘char’ 的无效转换 [-fpermissive] 如何打印?但在变量内部的主要内容,如果未能解决你的问题,请参考以下文章

C++ 从 'char' 到 'const char' 的无效转换

从 ‘char*’ 到 ‘char’ 的无效转换 [-fpermissive] 如何打印?但在变量内部

从“const char*”到“unsigned char*”的无效转换

发布 HC-SE04 MQTT ESP8266 的值“从 'char' 到 'char*' [-fpermissive] 的无效转换”

奇怪的错误,错误:从‘const char*’到‘char’的无效转换[-fpermissive]

我收到从 char 到 const char 错误的无效转换。如何修复这个程序?