金子涵778 2023-04-18 22:43 采纳率: 90%
浏览 21
已结题

C语言中结构体输出的问题


#include<stdio.h>
struct student{        
    char *pcNum;
    char *pcName;
    char cSex;
    struct date{
        int nYear,nMonth,nDay;
    }dBirth;
    float fScore;
}sStu1={"0804101","Mr.Zhang",'M',1979,9,1,80},sStu2;

void main()
{    
    sStu2=sStu1;/*同类型结构体变量之间进行赋值运算*/
    printf ("Number=%s\n",sStu2.pcNum);
    printf ("Name=%s\n",sStu2.pcName);
    printf ("Born=%d年",sStu2.dBirth.nYear);
    printf ("%d月",sStu2.dBirth.nMonth);
    printf ("%d日\n",sStu2.dBirth.nDay);
    printf ("Sex=%c\n",sStu2.cSex);
    printf ("Score=%.1f\n",sStu2.fScore);
} 

请问对结构体成员输出的时候为什么是sStu2.pcNum呢,以我对指针的理解,这里应该用是sStu2.(*pcNum),结构体里面不是定义的指针的形式吗,这个pcNum不就是个地址嘛,是如何做到把值输出的,大学生学不明白了

  • 写回答

2条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-04-18 22:50
    关注

    因为这是以 %s输出,即以字符串形式输出,直接传首地址就行了,然后printf 会往后一直输出,直到遇到结束符'\0',停止输出%s对应的字符串内容

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月27日
  • 已采纳回答 4月19日
  • 创建了问题 4月18日

悬赏问题

  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗