c - 为结构变量定义字符串值

标签 c structure

我刚刚回答了一些面试问题。遇到了这个与结构相关的问题,我不明白输出中发生了什么,如果有人能解释原因的话。

什么时候在像

这样的结构中使用字符指针
#include <stdio.h>

struct name {
    char *array;
}variable;

int main( int argc, char * argv[] ){

    variable.array="hello";
    printf( "%s\n", variable.array );
}

输出是 hello 打印的,但是当将结构变量更改为

struct name {
    char array[10];
}variable;

编译器在

处抛出错误“赋值中的类型不兼容”
variable.array="hello";

我真的很困惑我错过了重点。为什么会显示赋值问题之类的错误??请纠正我 谢谢

最佳答案

你只能在声明的时候像这样初始化数组, 否则你需要使用

strcpy(variable.array,"hello");

你甚至不能用一个简单的字符数组那样做

char a[10];

a="hello";

编译器会告诉:

incompatible types when assigning to type ‘char[10]’ from type ‘char *’

因为 "hello" 是一个字符串文字,它由一个不能像这样分配给数组的指针保存。

关于c - 为结构变量定义字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4705065/

相关文章:

c - 为什么在 C 中执行算术运算后会丢失值的余数?

c - 使用 Structure 的数组进行排序

c - C中使用switch语句的疑惑

c - 在迭代中打破条件

c - 从结构中添加或删除数据

c - 预期的 ) 和 ( c 中的错误

c - c中的结构来存储员工的详细信息并打印那些超过10000的员工

c - 在c中的结构中保留相同的变量

c - 对结构使用 malloc 时出错

c - 我如何在 C 的多线程程序中将 void 指针转换为 char 数组