结构体指针变量可以直接赋值吗
时间: 2024-05-08 13:16:42 浏览: 79
可以直接赋值。结构体指针变量可以指向同一类型的结构体变量或者指向NULL。例如:
```
struct person {
char name[20];
int age;
};
struct person p1 = {"Tom", 20};
struct person *p2 = &p1;
p2->age = 22;
// p2指向p1,修改p2的值同时也修改了p1的值
printf("%s is %d years old.\n", p1.name, p1.age); // output: Tom is 22 years old.
struct person *p3 = NULL; // p3指向NULL
```
相关问题
c语言结构体指针变量赋值
假设有以下结构体定义:
```
struct student {
char name[20];
int age;
float gpa;
};
```
可以定义一个结构体指针变量来指向该结构体:
```
struct student *ptr;
```
然后可以动态分配内存空间给该指针变量:
```
ptr = (struct student*) malloc(sizeof(struct student));
```
接着可以给该结构体指针变量赋值,例如:
```
strcpy(ptr->name, "Tom");
ptr->age = 20;
ptr->gpa = 3.5;
```
这样就给结构体指针变量 ptr 的成员变量赋值了。
c语言结构体指针元素不能赋值,C语言结构体指针必须被结构体变量赋地址或malloc后才能正常使用,不能单独赋值?...
是的,你说得没错。在 C 语言中,结构体指针必须被结构体变量赋地址或者使用 malloc 分配内存后才能使用。结构体指针是一种特殊的指针类型,它指向结构体的首地址。如果你尝试直接给结构体指针赋值,编译器会报错,因为结构体指针本身是没有内存空间的。所以,为了使用结构体指针,必须先分配内存空间,然后将结构体指针指向该内存空间。
阅读全文