如何访问结构体指针的结构体指针成员

 我来答
娱乐小八卦啊a
高粉答主

2020-03-30 · 娱乐小八卦,天天都知道
娱乐小八卦啊a
采纳数:256 获赞数:117857

向TA提问 私信TA
展开全部

1、该种方法用指针指向一个结构体,使用时p->成员名。

struct Student p;

struct Student stu1={001,“zb”,90.5};

p=&stu1;

printf(“学号\t姓名\t分数\n”);

printf("%d\t%s\t%0.1f\n",p->num,p->name,p->score);*/

2、该种方法是定义一个指针变量,只指向一个struct Student的结构体

struct Student* p;

struct Student stu={001,"zhao",90.5};

p=&stu;

printf("学号\t姓名\t分数\n");

printf("%d\t%s\t%0.1f\n",(*p).num,(*p).name,(*p).score);*/

扩展资料

指向结构体变量的指针

除了通过“结构体变量名.成员名”的方式引用结构体变量中的成员,除了这种方法之外还可以使用指针。&student1 表示结构体变量 student1 的首地址,即 student1 第一个项的地址。如果定义一个指针变量 p 指向这个地址的话,p 就可以指向结构体变量 student1 中的任意一个成员。

用指针引用结构体变量成员的方式是:(*指针变量名).成员名

注意,*p 两边的括号不可省略,因为成员运算符“.”的优先级高于指针运算符“*”,所以如果 *p 两边的括号省略的话,那么 *p.num 就等价于 *(p.num) 了。

从该程序也可以看出:因为指针变量 p 指向的是结构体变量 student1 第一个成员的地址,即字符数组 name 的首地址,所以 p 和 (*p).name 是等价的。

但是,“等价”仅仅是说它们表示的是同一个内存单元的地址,但它们的类型是不同的。指针变量 p 是 struct STUDENT* 型的,而 (*p).name 是 char* 型的。所以在 strcpy 中不能将 (*p).name 改成 p。用 %s 进行输入或输出时,输入参数或输出参数也只能写成 (*p).name 而不能写成 p。

匿名用户
推荐于2017-11-27
展开全部
结构体指针成员所指向变量,这个说法理解起来有点困难。
从字面意思上看断句,有如下几种可能:
首先定义一个包含所有可能情况的结构体:
struct test
{
int a;
int *p;
};
struct test t1, *t2;
1 结构体/指针成员/所指向的变量。
结构体中有指针成员,然后要访问这个结构体成员指向的变量值。
那么可以*(t1.p)这种方式对p取值。

2 结构体指针/成员/所指向变量。
这种情况有两种方法可以访问:
*(t2->p)
或者
*(*(t2).p)
效果是一样的。

3 描述有误,实际为:
结构体指针所指向/成员变量。
同样有两种方法可以使用:
t2->p
或者
(*t2).p
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式