📅  最后修改于: 2023-12-03 15:30:16.385000             🧑  作者: Mango
C语言结构和指针是C语言中非常重要的概念,它们可以帮助我们更好地组织和处理数据。在本文中,我们将学习这两个概念的基础知识和一些示例。
C语言中的结构体是一种用户定义的数据类型,它可以包含不同的数据类型,如整数、字符、浮点数等等。结构体的定义方式为:
struct 结构体名 {
数据类型1 变量名1;
数据类型2 变量名2;
...
};
下面是一个示例,定义了一个学生的结构体:
struct Student {
int id;
char name[20];
int age;
float score;
};
可以看到,这个结构体包含了学生的学号、姓名、年龄和成绩四个数据。我们可以根据这个结构体的定义,定义一个变量来存储一个具体的学生的信息。
struct Student stu1;
stu1.id = 10001;
strcpy(stu1.name, "Tom");
stu1.age = 18;
stu1.score = 95.5;
这里我们定义了一个名为stu1的结构体变量,并给它的成员变量赋值。成员变量可以通过“.”操作符来访问。例如,要访问结构体变量stu1的id成员变量,可以这样写:
int id = stu1.id;
指针是C语言中非常重要的概念,它可以帮助我们动态地分配内存、传递参数以及优化程序性能。指针是一个存储内存地址的变量,可以通过“*”操作符来访问所指向的内存单元。
下面是一个示例,定义了一个指向整数类型的指针变量ptr:
int *ptr;
这里我们使用了“*”操作符来说明这是一个指针变量。指针变量必须要进行初始化,在没有初始化之前,指针变量不指向任何有效的内存单元。我们可以通过“&”操作符来获取某个变量的内存地址,并将该地址赋给指针变量。
int num = 10;
int *ptr = #
这里我们定义了一个变量num,并获取了它的内存地址,并将该地址赋给了指针变量ptr。这个指针变量现在指向了num所在的内存单元。
我们可以通过“*”操作符来访问指针所指向的内存单元的值。
int num = 10;
int *ptr = #
*ptr = 20;
这里我们将ptr所指向的内存单元的值修改为20。现在,变量num的值也变成了20。
指针还可以指向数组和结构体。例如,我们可以定义一个指向结构体的指针,并使用“->”操作符来访问结构体成员变量。
struct Student {
int id;
char name[20];
int age;
float score;
};
struct Student stu1;
stu1.id = 10001;
strcpy(stu1.name, "Tom");
stu1.age = 18;
stu1.score = 95.5;
struct Student *ptr = &stu1;
ptr->score = 98.0;
这里我们定义了一个指向结构体Student的指针ptr,并将其指向了变量stu1。然后,我们使用“->”操作符来访问stu1的成员变量score,并将其设置为98.0。
下面是一个示例,演示了结构体和指针的使用。该程序定义了一个学生结构体,包含学号、姓名、年龄和成绩四个数据,然后定义了一个指向结构体的指针,将结构体指针作为函数参数传递给一个函数,并在函数中修改结构体的成员变量的值。
#include <stdio.h>
#include <string.h>
struct Student {
int id;
char name[20];
int age;
float score;
};
void modify(struct Student *stu) {
stu->score = 98.0;
}
int main() {
struct Student stu1;
stu1.id = 10001;
strcpy(stu1.name, "Tom");
stu1.age = 18;
stu1.score = 95.5;
printf("Before modification:\n");
printf("id = %d\n", stu1.id);
printf("name = %s\n", stu1.name);
printf("age = %d\n", stu1.age);
printf("score = %f\n", stu1.score);
modify(&stu1);
printf("\nAfter modification:\n");
printf("id = %d\n", stu1.id);
printf("name = %s\n", stu1.name);
printf("age = %d\n", stu1.age);
printf("score = %f\n", stu1.score);
return 0;
}
输出结果如下:
Before modification:
id = 10001
name = Tom
age = 18
score = 95.500000
After modification:
id = 10001
name = Tom
age = 18
score = 98.000000
这个程序定义了一个函数modify,该函数接受一个指向Student结构体的指针作为参数,并将该结构体的score成员变量修改为98.0。在main函数中,我们定义了结构体变量stu1,并初始化其成员变量的值。然后我们调用modify函数,并将stu1的地址传递给了该函数。在modify函数中,我们使用“->”操作符来访问stu1的成员变量score,并修改它的值。在main函数中,我们输出了修改前后的stu1的值,可以看到,score的值已经从95.5修改为98.0了。
C语言中结构体和指针的应用非常广泛,不仅可以帮助我们更好地组织和处理数据,还可以提高程序的性能和可维护性。本文介绍了结构体和指针的基础概念,并提供了一个使用结构体和指针的示例程序。希望能对C语言程序员有所帮助。