#define STRMAX 50
struct Person {
char sName[STRMAX];
int iAge;
};
typedef struct Person PERSON;
int main() {
PERSON *personen[1];
personen[0]->sName = "Pieter";
personen[0]->iAge = 18;
return 0;
}
此代码在personen[0]->sName = "Pieter";
上生成错误,指出分配中的不兼容类型。为什么呢?
答案 0 :(得分:2)
您不需要指针数组。尝试
PERSON personen[1];
和其他人一样说,使用strcpy函数!
答案 1 :(得分:1)
不要尝试分配数组。使用strcpy
将字符串从一个数组复制到另一个数组。
... sName
是一个字符数组,而“Pieter”是const char*
。你不能将后者分配给前者。编译器总是正确的:)
答案 2 :(得分:1)
更改
PERSON *personen[1];
到
PERSON personen[1];
并使用strcpy复制字符串。
strcpy(personen[0]->sName,"Pieter");
答案 3 :(得分:0)
我同意上述内容,但我认为包括“为什么”
也很重要int a; // is an integer
int *b; // pointer to an integer must be malloced (to have an array)
int c[]; // pointer to an integer must also be malloced (to have an array)
int d[5]; // pointer to an integer bu now it is initialized to an array of integers
从简单的指针获取b和c并给它们匹配的内存d使用以下内容为它们提供内存空间
b = (int *) malloc(sizeof(int)*5);
它将从malloc返回的指针强制转换为int指针,并创建一个整数大小为5倍的内存块(因此它将保存5个整数,如d)