结构体指针

community_1296 2021-10-29 18:41:54

定义一个学生结构体,并实例化一个学生对象,保存一个学生的基本信息,最后使用结构体指针访问和输出该学生信息。请选出错误答案。

返回练习题答题页面

...全文
839 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
海中有鱼 2023-07-26
  • 打赏
  • 举报
回复 1

定义指针的时候为什么不标明类型啊?这里为什么这么定义指针stu_prt啊?

#include <stdio.h>

struct
{
    char *name;
    int id;
    unsigned int age;
    char group;
    float score;
} stu = {"张三", 1001, 16, 'A', 95.50}, *stu_prt = &stu;//这里为什么这么定义指针stu_prt啊?

int main(int argc, char** argv)
{
    printf("========== 学生基本信息 ==========\n");
    printf("姓名:%s\n学号:%d\n年龄:%d\n所在小组:%c\n成绩:%.2f\n",
           stu_prt->name, stu_prt->id, stu_prt->age, stu_prt->group, stu_prt->score);
    printf("==================================\n");

    return 0;
}
CSDN-Ada助手 2023-07-26
  • 举报
回复
@海中有鱼 在定义指针变量时,需要使用"*"符号来表示该变量是一个指针类型。这里定义指针变量stu_prt的目的是为了保存结构体变量stu的地址,以便通过指针访问和操作结构体的成员变量。通过指针访问结构体成员可以使用"->"运算符,例如stu_prt->name表示访问结构体指针变量stu_prt所指向的结构体的name成员变量。
juechen333 2023-03-12
  • 打赏
  • 举报
回复 3
“.” 点运算符的优先级高于 “*” 指针运算符的优先级
CSDN-Ada助手 2023-04-28
  • 举报
回复 1
@juechen333 是的,您说得对。点运算符优先级高于指针运算符,因此使用指针访问结构体成员时需要使用箭头运算符。
___川流不息 2023-02-16
  • 打赏
  • 举报
回复 2
用指针名字指向成员属性要用->,如果还想要用.则要将指针解引用再用. (*ptr).attr,优先级问题。
CSDN-Ada助手 2023-04-28
  • 举报
回复
@___川流不息 您说得对,使用指针访问结构体成员属性时,需要使用箭头操作符->,而不是点操作符.。如果一定要使用点操作符,可以通过解引用指针再使用点操作符,例如(*ptr).attr。感谢您的指正和补充!
瑶池酒剑仙 2022-12-13
  • 打赏
  • 举报
回复 1

主页或者专栏有助于学习高效C语言 https://blog.csdn.net/gzplyx?type=blog

CSDN-Ada助手 2023-04-28
  • 举报
回复
@瑶池酒剑仙 是的,CSDN上有很多优秀的C语言博客和专栏,可以帮助你更加高效地学习C语言。除了这个博客,还有很多其他的资源可以供你参考。祝你学习愉快!
m0_74009216 2022-11-25
  • 打赏
  • 举报
回复
为什么要借助stu而不是直接用*stus
null... 2022-06-26
  • 打赏
  • 举报
回复 1

优先级问题,好细啊

木板ly 2022-04-21
  • 打赏
  • 举报
回复

#include <stdio.h>

typedef struct
{
    char *name;
    int id;
    unsigned int age;
    char group;
    float score;
} Student;

int main(int argc, char** argv)
{
    Student stu = {"张三", 1001, 16, 'A', 95.50};
    Student *stu_prt = &stu;

    printf("========== 学生基本信息 ==========\n");
    printf("姓名:%s\n学号:%d\n年龄:%d\n所在小组:%c\n成绩:%.2f\n",
           *stu_prt.name, *stu_prt.id, *stu_prt.age, *stu_prt.group, *stu_prt.score);
    printf("==================================\n");

    return 0;
}
HYT-TYH 2022-04-02
  • 打赏
  • 举报
回复 5
指针访问对象 1. student->name 2. (*student).name
春夜喜雨 2022-03-13
  • 打赏
  • 举报
回复 9
考察的是点(.)属于结合类,优先级属于最高的一级;星号(*)属于单目运算符,优先级属于第二级。

13

社区成员

发帖
与我相关
我的任务
社区管理员
  • community_1296
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧