C语言结构体
在C语言中,结构体是一种自定义的数据类型,它允许用户将不同类型的数据组合在一起。结构体由多个变量组成,这些变量称为结构体的成员。结构体成员可以是不同的数据类型,如整数、浮点数、字符或其他结构体等。
结构体的定义格式如下:
struct [structure tag] {
member definition;
member definition;
...
member definition;
} [one or more structure variables];
其中,structure tag
是结构体类型的名称,member definition
定义了结构体的成员,structure variables
是一个或多个结构体变量的名称。
例如,下面是一个结构体的定义:
struct person {
char name[50];
int age;
float salary;
};
这个结构体包含三个成员:name
,age
和salary
,分别是字符数组、整数和浮点数类型。
我们可以使用以下语法创建结构体变量:
struct person p1, p2;
这将创建两个名为p1
和p2
的person
类型的结构体变量。
我们可以使用以下语法访问结构体变量的成员:
p1.name;
p1.age;
p1.salary;
这将分别返回p1
结构体变量的name
,age
和salary
成员的值。
结构体在C语言中非常有用,它允许用户创建自定义数据类型,更好地组织和管理数据。
我们可以使用以下语法创建结构体变量,并对其进行初始化:
struct person p1 = {"John Doe", 30, 5000.0};
struct person p2 = {"Jane Smith", 25, 6000.0};
这将分别创建两个名为p1
和p2
的person
类型的结构体变量,并将它们的成员初始化为指定的值。
访问结构体变量,并赋值
下面是一个例子,我们创建了一个person
类型的结构体变量p1
,并给它的成员赋值,然后通过访问结构体变量成员的方式获取其值:
#include <stdio.h>
#include <string.h>
struct person {
char name[50];
int age;
float salary;
};
int main() {
struct person p1;
strcpy(p1.name, "John Doe");
p1.age = 30;
p1.salary = 5000.0;
printf("Name: %s\\n", p1.name);
printf("Age: %d\\n", p1.age);
printf("Salary: %f\\n", p1.salary);
return 0;
}
输出结果为:
Name: John Doe
Age: 30
Salary: 5000.000000
在上面的例子中,我们首先定义了一个person
类型的结构体变量p1
,然后分别给它的成员name
、age
和salary
赋值。最后,我们使用printf()
函数输出结构体变量成员的值。
结构体作为函数参数
结构体可以作为函数参数,以便在函数中操作和修改结构体的值。以下是一个简单的例子,其中定义了一个printPerson()
函数,该函数接受一个person
类型的结构体变量作为参数,并打印该变量的成员值:
#include <stdio.h>
#include <string.h>
struct person {
char name[50];
int age;
float salary;
};
void printPerson(struct person p) {
printf("Name: %s\\n", p.name);
printf("Age: %d\\n", p.age);
printf("Salary: %f\\n", p.salary);
}
int main() {
struct person p1;
strcpy(p1.name, "John Doe");
p1.age = 30;
p1.salary = 5000.0;
printPerson(p1);
return 0;
}
输出结果为:
Name: John Doe
Age: 30
Salary: 5000.000000
在上面的例子中,我们定义了一个printPerson()
函数,该函数接受一个person
类型的结构体变量作为参数,并使用printf()
函数打印该变量的成员值。在main()
函数中,我们首先定义了一个person
类型的结构体变量p1
,然后给它的成员name
、age
和salary
赋值。最后,我们调用printPerson()
函数并将p1
作为参数传递给它,该函数打印p1
的成员值。
指向结构体的指针
我们可以使用指向结构体的指针来访问结构体变量的成员。以下是一个例子,我们定义了一个指向person
类型结构体的指针,然后使用指针访问结构体变量成员的方式获取其值:
#include <stdio.h>
#include <string.h>
struct person {
char name[50];
int age;
float salary;
};
int main() {
struct person p1;
struct person *ptr;
ptr = &p1;
strcpy(p1.name, "John Doe");
p1.age = 30;
p1.salary = 5000.0;
printf("Name: %s\\n", ptr->name);
printf("Age: %d\\n", ptr->age);
printf("Salary: %f\\n", ptr->salary);
return 0;
}
输出结果为:
Name: John Doe
Age: 30
Salary: 5000.000000
在上面的例子中,我们首先定义了一个person
类型的结构体变量p1
和一个指向person
类型结构体的指针ptr
。然后,我们使用&
运算符将p1
的地址赋给ptr
。我们可以使用ptr->name
、ptr->age
和ptr->salary
的方式访问p1
结构体变量的成员,它们的效果与(*ptr).name
、(*ptr).age
和(*ptr).salary
相同。最后,我们使用printf()
函数输出结构体变量成员的值。