在 C 语言 中,指针 可以存放任意的 数据类型 的地址,比如 int、long、dobule,也可以存放 结构体 的地址,存放结构体地址的指针,我们称为结构体指针。
struct structName *pArrName;
我们定义了一个结构体指针 pArrName,该指针存放的是结构体 structName 的地址。
pArrName->fileld;
参数 | 描述 |
---|---|
pArrName | 结构体指针名。 |
fileld | 需要访问的成员。 |
如果是结构体指针,要访问其成员,那么我们不再是使用点,而是使用 ->
。
(*pArrName).fileld;
参数 | 描述 |
---|---|
pArrName | 结构体指针名。 |
fileld | 需要访问的成员。 |
如果我们使用 *
的方式,访问结构体成员,那么我们必须要使用 ()
改变 运算符的优先级,否则,会出错。
C 语言结构体指针定义与使用
#include <stdio.h>
struct Student{
char *name;
float score;
};
void main()
{
printf("嗨客网(www.haicoder.net)\n\n");
struct Student student = {"HaiCoder", 100};
struct Student *pStu = &student;
printf("Stu name = %s, score = %f\n", pStu->name, pStu->score);
printf("\n");
return 0;
}
程序运行后,控制台输出如下图所示:
我们首先,定义了一个结构体 Student,该结构体有两个成员,即一个 字符串 类型的 name 和一个 float 类型 的 score。
接着,我们定义了一个结构体类型变量 student 并初始化,同时,我们定义了一个结构体指针 pStu,其指向了 student 结构体。
最后,我们使用 printf 打印了结构体指针中的成员,这里,我们使用的是 ->
,而不是点。
C 语言结构体指针定义与使用
#include <stdio.h>
struct Student{
char *name;
float score;
};
void main()
{
printf("嗨客网(www.haicoder.net)\n\n");
struct Student student = {"HaiCoder", 100};
struct Student *pStu = &student;
printf("Stu name = %s, score = %f\n", (*pStu).name, (*pStu).score);
printf("\n");
return 0;
}
程序运行后,控制台输出如下图所示:
这次,我们使用了 *
的方式,来访问了结构体的成员,这里,我们必须使用 ()
改变运算符的优先级。
在 C 语言中,指针可以存放任意的数据类型的地址,比如 int、long、dobule,也可以存放结构体的地址,存放结构体地址的指针,我们称为结构体指针。