结构体指针与结构体变量有什么区别
时间: 2023-05-10 17:55:59 浏览: 786
结构体指针和结构体变量的区别在于,结构体变量是一个实际的变量,它占用内存空间,而结构体指针只是一个指向结构体变量的指针,它本身并不占用内存空间。通过结构体指针可以访问结构体变量中的成员,而且可以通过指针修改结构体变量中的成员。
相关问题
结构体指针和结构体指针变量
结构体指针是指向结构体类型的指针变量,它可以存储结构体变量的内存地址。结构体指针变量是一个变量,它存储了一个结构体变量的内存地址。
通过结构体指针,可以方便地对结构体变量进行操作和访问成员。使用结构体指针可以节省内存空间,提高程序的运行效率。
例如,假设有以下定义的结构体类型:
```
struct Person {
char name[20];
int age;
};
```
我们可以创建一个结构体变量并通过指针进行访问和操作:
```
struct Person p; // 创建一个结构体变量
struct Person *ptr; // 声明一个结构体指针变量
ptr = &p; // 将结构体变量的地址赋给指针变量
// 通过指针访问结构体成员
strcpy(ptr->name, "John");
ptr->age = 25;
```
通过指针访问结构体成员时使用箭头运算符 "->",它相当于对指针进行解引用并访问该成员。
总结起来,结构体指针可以用来引用和操作结构体变量,可以通过指针访问结构体成员,并且能够节省内存空间和提高程序的运行效率。
结构体指针赋值给结构体变量
定义一个结构体:
```
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 ;
}
```
阅读全文