C语言的指针和结构体
- 格式:ppt
- 大小:378.50 KB
- 文档页数:39


[c语言结构体数组赋值]C语言给结构体指
针赋值
篇一 : C语言给结构体指针赋值
指向结构体的指针
在C语言中几乎可以创建指向任何类型的指针,包括用户自定
义的类型。创建结构体指针是极常见的。下面是一个例子:
r是一个指向结构体的指针。请注意,因为r是一个指针,所
以像其他指针一样占用4个字节的内存。而malloc语句会从堆上分
配45字节的内存。*r是一个结构体,像任何其他Rec类型的结构体
一样。下面的代码显示了这个指针变量的典型用法: 您可以像对待一个普通结构体变量那样对待*r,但在遇到C的
操作符优先级问题时要小心。如果去掉*r两边的括号则代码将无法编译,因为“.”操作符的优先级高于“*”操作符。使用结构体指针时不断
地输入括号是令人厌烦的,为此C语言引入了一种简记法达到相同
的目的: r->这种写法和.是完全等效的,但是省去了两个字符。
指向数组的指针 还可以创建指向数组的指针,如下所示:
或:
可见要创建指向整数数组的指针,只需创建一个普通的整数指
针即可。调用malloc分配合适的数组空间,然后将指针指向数组的第一个元素。访问数组元素既可以用普通的数组下标也可以用指针运
算。C将两种方法视为是等效的。 指向数组的指针这一技巧尤其适用于字符串。您可以为某个特
定大小的字符串分配刚好合适的内存。 指针数组
有时声明一 个指针数组可以节省大量内存,或者使得某些内
存消耗较大的问题得以解决。下面例子中的代码,声明了一个由10
个结构体指针组成的数组,而不是一个结构体数组。否则这个结构体数组将占用243 * 10=2,430字节的内存。使用指针数组可以最大限度
减小内存消耗,直到用malloc语句为记录实际分配内存空间。作为
此过程的演示,下面的代码只为一个记录分配空间,保存某个值后又将空间释放:
包含指针的结构体
结构体可以包含指针,如下所示: typedef struct
{ char name[21];
c语言中结构体的定义和使用
结构体是C语言中的一种自定义数据类型,它可以包含多个不同类型的变量,这些变量称为结构体成员。结构体的定义形式为:
```
struct structure_name {
member1_type member1_name;
member2_type member2_name;
...
};
```
其中,`structure_name`为结构体名称,用于标识该结构体的类型;`member1_type`、`member2_type`等为结构体成员的数据类型,可以是整型、浮点型、字符型等基本数据类型,也可以是指针、数组、甚至是其他结构体类型;`member1_name`、`member2_name`等为结构体成员的名称,用于访问该成员的值。
例如,下面定义了一个名为`person`的结构体,包含3个成员:`name`、`age`和`gender`,分别为字符串、整型和字符型:
定义完结构体后,就可以根据该结构体类型定义相应的结构体变量,并通过`.`操作符访问该结构体变量的成员。例如,下面定义了一个名为`p`的结构体变量,通过`.`操作符赋值和访问该变量的成员:
```
struct person p;
strcpy(, "Jack");
p.age = 30;
p.gender = 'M';
```
除了上述基本的结构体定义和访问方法外,还可以通过以下方式扩展结构体的功能: 1. 结构体指针
```
struct date {
int year;
int month;
int day;
};
struct person p;
strcpy(, "Jack");
- 1 - c语言结构体数组指针
这是一篇介绍C语言结构体数组指针的文章,用以帮助初学者理解如何运用C语言结构体数组指针。
C语言是一种常用的高级编程语言,它经常用于开发操作系统、游戏、图形图像应用程序以及其它应用程序。结构体数组指针是C语言中一种非常重要的语法特性,它有助于编程者更好地描述和操作复杂的数据结构。
结构体指针可用于存储一个或多个变量的地址,以便程序可以随时访问存储在指针指向的内存空间中的数据。结构体数组指针是一种用于存储多个结构体变量的地址的指针。
要使用结构体数组指针,首先需要定义一个结构体数组:
struct Person {
char name[64];
int age;
float height;
};
Person people[10];
定义了结构体数组之后,就可以定义一个结构体数组指针:
struct Person *pp;
这表示pp指向people数组的第一个元素。在之后的程序中,可以使用pp指针来访问people数组中的每一个元素。例如,可以使用如下语句: - 2 - printf('Na %s, Age: %d, Height: %f
', pp->name, pp->age, pp->height);
以上代码将输出people数组中第一个元素的信息。另外,如果要访问people数组的第二个元素,可以使用如下代码:
pp++;
printf('Na %s, Age: %d, Height: %f
', pp->name, pp->age, pp->height);
在程序中可以使用类似的方法来访问people数组中的其它元素。
要总结一下,结构体数组指针是一种常用的C语言语法特性,它可以帮助程序员更好地描述复杂的数据结构。它由一个指针(如pp)和一个结构体数组(如people)组成,使用这种指针可以将结构体数组的元素一一访问。
结构体指针数组定义
在C语言中,结构体指针数组的定义涉及到多个概念,包括结构体、指针和数组。下面是一个示例:
```c
include <>
// 定义一个结构体
struct Student {
char name[20];
int age;
};
int main() {
// 定义一个结构体指针数组
struct Student students[3];
// 为数组中的每个指针分配内存空间,并初始化
for (int i = 0; i < 3; i++) { students[i] = malloc(sizeof(struct Student));
if (students[i] == NULL) {
printf("Memory allocation failed!\n");
return 1;
}
printf("Enter name and age for student %d:\n", i + 1);
scanf("%s", students[i]->name);
scanf("%d", &students[i]->age);
}
// 打印学生信息
for (int i = 0; i < 3; i++) {
printf("Student %d: %s, %d\n", i + 1, students[i]->name,
students[i]->age);
free(students[i]); // 释放内存空间
}
return 0;
}
``` 在这个例子中,我们首先定义了一个名为`Student`的结构体,它包含一个字符数组`name`和一个整数`age`。然后,我们在`main`函数中定义了一个结构体指针数组`students`,它包含三个指向`Student`结构体的指针。我们使用`malloc`函数为每个指针分配内存空间,并使用`scanf`函数从用户那里获取信息来初始化每个结构体。最后,我们使用一个循环打印每个学生的信息,并使用`free`函数释放内存空间。