C

C 知识量:16 - 74 - 317

14.3 结构与指针><

结构指针的声明和初始化- 14.3.1 -

使用指向结构的指针有诸多好处,例如:

  • 指向结构的指针通常比结构本身更好操控。

  • 在一些C实现中,不能将结构作为参数进行传递,但可以传递指向结构的指针。

  • 传递指针效率更高。

  • 表示数据的结构中可能也包含指向其他结构的指针。

声明指针的方法很简单,例如:

struct people {
    char name[20];
    int age;
};
struct people * him;

以上代码中,him被声明为指向people类型结构的指针。这个声明没有创建新的结构,但现在him可以指向任意一个people类型的结构了,例如:

struct people Jeff;
him = &Jeff;

注意:结构名不是结构的地址,Jeff前需要地址运算符(&)。

通过指针访问成员- 14.3.2 -

使用指针访问结构的成员有两种方法:

  • 使用->运算符

  • 使用*运算符和.运算符

以下是一个应用示例:

#include <stdio.h>
#include <string.h>

int main(void) {
    struct people {
        char name[20];
        int age;
    };
    struct people * him;
    struct people Jeff = {
        "Jeff",
        35
    };
    him = &Jeff;
    printf("Jeff's name is %s and age is %d.\n", him->name, (*him).age);
    system("pause");
    return 0;
}

运行结果为:

Jeff's name is Jeff and age is 35.

需要注意:使用*运算符和.运算符时,*运算符和指针变量必须包含在括号内,因为.运算符比*运算符的优先级高。