结构体首地址赋值给指针
时间: 2023-07-25 10:15:46 浏览: 46
是完全合法和常见的操作。在C语言中,结构体变量的名称本身就代表着该结构体的首地址。因此,将结构体变量的名称赋值给一个指向结构体的指针,就相当于将该结构体的首地址赋值给指针。举个例子,假设有如下定义的结构体类型:
```
struct Person {
char name[20];
int age;
};
```
那么可以定义一个指向该结构体类型的指针,并将某个结构体变量的地址赋值给该指针:
```
struct Person p1 = {"Tom", 20};
struct Person *ptr = &p1;
```
在上面的代码中,变量`ptr`就是一个指向结构体`Person`的指针,而变量`p1`的地址通过`&p1`的方式被赋值给了`ptr`。此时,`ptr`指向的就是结构体`p1`的首地址。
相关问题
结构体指针如何赋值NULL
结构体指针可以通过直接赋值 `NULL` 来将其置为空指针。以下是示例代码:
```c
#include <stdio.h>
typedef struct {
int x;
int y;
} Point;
int main() {
Point* ptr = NULL; // 将结构体指针 ptr 置为 NULL
if (ptr == NULL) {
printf("指针为空。\n");
}
return 0;
}
```
在上面的示例中,我们声明了一个结构体 `Point`,然后声明了一个指向 `Point` 结构体的指针 `ptr`,并将其赋值为 `NULL`。然后,我们在条件语句中检查指针是否为空,如果是,则打印出 "指针为空" 的消息。
请注意,当结构体指针被赋值为 `NULL` 时,它不再指向任何有效的内存地址。因此,在使用该指针之前,应该确保为其分配了有效的内存块。
结构体指针赋值给结构体变量
定义一个结构体:
```
struct myStruct {
char c;
int i;
};
```
成员项包括一个字符型、一个整型。
编程实现结构体变量成员项的输入、输出:
```
#include <stdio.h>
int main() {
struct myStruct s;
printf("请输入一个字符和一个整数:");
scanf("%c%d", &s.c, &s.i);
printf("您输入的字符是%c,整数是%d\n", s.c, s.i);
return ;
}
```
通过结构体指针引用该变量:
```
#include <stdio.h>
int main() {
struct myStruct s;
struct myStruct *p = &s;
printf("请输入一个字符和一个整数:");
scanf("%c%d", &p->c, &p->i);
printf("您输入的字符是%c,整数是%d\n", p->c, p->i);
return ;
}
```