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。