当我尝试执行以下行时,编译器给我一个错误:“从类型‘char *’分配给类型‘char[100]’时出现不兼容的类型”:
records[i].address = records[i+1].address;
records
是一个 struct rec 数组,其定义如下:
struct rec{
char address[100];
}
为什么会出现这个错误?左右侧为同一类型。
最佳答案
char[100]
与 char *
的类型不同。一个是包含 100 个字符变量的数组,另一个是包含字符变量地址的变量。
您可以将char[100]
“分配”给char *
,只是因为“裸”数组计算为其第一个元素的地址 - 地址可以不保存任何东西 - 它不是变量,它是变量所在的地方。
因此,
char array[ 100 ];
char *ptr = array;
有效,同时
char array[ 100 ];
char *ptr;
array=ptr;
没有。第一种情况是说 ptr
现在指向 array
的第一个元素。第二个是“array
的地址应该被赋予ptr
的值,这实际上是废话。
关于c++ - 类型 "incompatible types when assigning to type ‘char[100]’ 的错误消息 ‘char *’“,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29618222/