struct的小问题

img


为什么int number打印的结果每次都不一样 哪里出了问题 在线求解,,

int number[20]
修改为
char number[20]
相应的
202205052修改为
"202205052"
%d\n", pd->number
修改为
%s\n", pd->number

非专业,提的是自己的见解:
1,number是一个数组,你给他在主函数附值的时候只给了一个数202205052
2,第三个printf里面的pd应该要打*号吧?

【以下回答由 GPT 生成】

问题原因是没有为结构体中的变量number进行初始化。C语言中,未初始化的变量的初始值是未定义的,可能是随机值。

要修复这个问题,可以在结构体定义时对变量number进行初始化,将其初始值设置为一个固定的值。例如,可以将结构体定义如下:

struct Student {
    char name[15]; //姓名
    char sex[10]; //性别
    int number = 0; //学号,进行初始化
};

这样,每次运行时,打印的number的结果就会是相同的。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

学号直接long吧


#include<stdio.h>

struct Stu
{
    char name[15];
    char sex[10];
    char number[20];
};

int main(void)
{
    Stu s1 = { "张三" ,"男","202205052"};
    Stu* p1 = &s1;

    printf("%s\n",p1->name);
    printf("%s\n", p1->sex);
    printf("%s\n", p1->number);

    getchar();
    return 0;
}