c++ - 类型 "incompatible types when assigning to type ‘char[100]’ 的错误消息 ‘char *’“

标签 c++ c arrays struct char

当我尝试执行以下行时,编译器给我一个错误:“从类型‘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/

相关文章:

c - OpenCV FAST角点检测SSE实现演练

c++ - C++ typedef 中的 struct 关键字

arrays - 数组Powershell中的匹配条目

javascript:带有对象的公共(public)数组

c++ - delete[] 怎么知道它是一个数组?

c++ - 抛出异常的方法的命名约定(C++)?

c - 使用递归错误反转链表

c++ - 将 qint64 转换为 QString

c++ - 如何将 "jni/*.c/cpp"文件添加到 CMakeLists.txt 文件?

c++ - luabind:无法从非内置类索引的表中检索值