c - 空指针赋值错误 union

标签 c pointers null variable-assignment unions

在上面的代码中,我无法输入学生的姓名,因为它给出了空指针赋值错误。如何解决这个问题,我可以输入卷号,它会很好地显示结果

#include<stdio.h>
#include<conio.h>
union student
{
    int roll_no;
    char name[10];
}s1,*a;
void main()
{
    clrscr();
    *a=s1;
    printf("Enter roll_no : ");
    scanf("%d",a->roll_no);
    clrscr();
    printf("Roll No : %d",a->roll_no);
    getch();
    clrscr();
    printf("Enter name : ");
    scanf("%s",a->name);
    clrscr();
    printf("Name : %s",a->name);
    getch();
}

最佳答案

  *a=s1;

将其更改为 -

  a=&s1;

还有这个声明-

scanf("%d",a->roll_no);     // %d expects address of int variable

应该是-

scanf("%d",&a->roll_no);

注意- - void main() -> int main(void)int main(int argc, char **argv)

关于c - 空指针赋值错误 union ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33253435/

相关文章:

c - 为什么将一个变量设置为它自己的地址会在不同的程序运行时产生不同的结果?

objective-c - 子类化UIAlertView

c# - 正则表达式中的匹配函数为空?

c - 包含 stddef.h 但未声明 max_align_t

c - 数组中最大的数

c - 如何在C中读写串口数据,open函数的问题

c++ - 在 C 的 char* 字符串中使用 NULL

c - 字节排序 HTTP 客户端

c++ - 我怎么知道谁拥有某个指针

pointers - 调用 struct 函数给出 "cannot refer to unexported field or method"