C - 指针和结构
在本教程中,我们将学习在C编程语言中使用具有结构的指针。
我们学会了如何在结构教程中使用结构创建和工作。
随意检查出来。
创建一个结构
让我们开始创建一个结构变量 student如下所示。
//student structure
struct student {
char id[15];
char firstname[64];
char lastname[64];
float points;
};
现在我们将创建一个学生结构变量 std。
为此,我们将写下以下代码。
//student structure variable struct student std;
访问结构的成员
我们知道要访问我们使用的结构的成员 .操作员。
在以下示例中,我们正在访问学生结构的成员。
printf("ID: %s\n", std.id);
printf("First Name: %s\n", std.firstname);
printf("Last Name: %s\n", std.lastname);
printf("Points: %f\n", std.points);
构造指针
以下是为结构创建指针的语法。 struct tagName *ptrName;因此,要为学生结构创建指针,我们将写下以下代码。 struct student *ptr;
将结构变量分配给指针
我们使用以下语法将结构变量地址分配给指针。 ptrName = &structVarName;在以下示例中,我们正在分配结构变量的地址 std到结构指针变量 ptr。
因此,PTR指向STD。 ptr = &std;
通过指针访问结构的成员
我们使用箭头运算符也称为成员选择运算符 ->通过指针变量访问结构的成员。
以下是通过指针访问结构的成员的语法。 ptrName->member在以下示例中,我们正在访问 firstname成员 student通过指针变量结构 ptr。 printf("First Name: %s", ptr->firstname);
完整的代码
#include <stdio.h>
int main(void) {
//student structure
struct student {
char id[15];
char firstname[64];
char lastname[64];
float points;
};
//student structure variable
struct student std;
//student structure pointer variable
struct student *ptr = NULL;
//assign std to ptr
ptr = &std;
//get student detail from user
printf("Enter ID: ");
scanf("%s", ptr->id);
printf("Enter first name: ");
scanf("%s", ptr->firstname);
printf("Enter last name: ");
scanf("%s", ptr->lastname);
printf("Enter Points: ");
scanf("%f", &ptr->points);
//display result via std variable
printf("\nResult via std\n");
printf("ID: %s\n", std.id);
printf("First Name: %s\n", std.firstname);
printf("Last Name: %s\n", std.lastname);
printf("Points: %f\n", std.points);
//display result via ptr variable
printf("\nResult via ptr\n");
printf("ID: %s\n", ptr->id);
printf("First Name: %s\n", ptr->firstname);
printf("Last Name: %s\n", ptr->lastname);
printf("Points: %f\n", ptr->points);
return 0;
}
Enter ID: s01 Enter first name: Enter last name: Enter Points: 8.44 Result via std ID: s01 First Name: Last Name: Points: 8.440000 Result via ptr ID: s01 First Name: Last Name: Points: 8.440000
我们可以代表学生结构变量 std在记忆中如下。
所以,当我们创建结构变量时 std它占用了147字节的内存空间。
|成员|数据类型|大小|存储位置|
| --- - | --- | - - | --- |
| id |char| 15字节| 1000到1014 |
|firstname|char| 64字节| 1015到1078 |
|lastname|char| 64字节| 1079到1142 |
|points|float| 4字节| 1143至1146 |
接下来我们有指针变量 ptr它保持内存地址1000即,存储地址 std结构变量。
因此,PTR指向STD。

