我刚刚回答了一些面试问题。遇到了这个与结构相关的问题,我不明白输出中发生了什么,如果有人能解释原因的话。
什么时候在像
这样的结构中使用字符指针#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/