是因为结构指针指向的是结构体的内存地址,而不是结构体本身。当我们成功分配了一个指针后,该指针指向的内存空间是未初始化的,其中的值是不确定的。
要将值分配给结构指针,我们需要先为结构体分配内存空间,然后再将值赋给结构体的成员变量。可以通过以下步骤来实现:
以下是一个示例代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int id;
char name[20];
} Person;
int main() {
Person* personPtr = (Person*)malloc(sizeof(Person)); // 为结构体分配内存空间
if (personPtr != NULL) {
personPtr->id = 1; // 将值赋给结构体的成员变量
strcpy(personPtr->name, "John");
printf("Person ID: %d\n", personPtr->id);
printf("Person Name: %s\n", personPtr->name);
free(personPtr); // 释放内存空间
} else {
printf("Failed to allocate memory for Person.\n");
}
return 0;
}
在这个例子中,我们定义了一个名为Person的结构体,包含id和name两个成员变量。通过malloc函数为结构体分配内存空间,并将返回的指针赋给personPtr。然后,我们使用箭头运算符将值分配给结构体的成员变量,并打印出来。最后,使用free函数释放内存空间。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云