在main()或main()之外声明结构的位置?

Man*_*ora 5 c struct

案例1:main()工作正常之外宣布的结构

#include<stdio.h>
#include<conio.h>
struct prod
{
    int price,usold;
};
int main()
{
    struct prod *p,a;

    int billamt(struct prod *);
    int bill;
    printf("enter the values \n");
    scanf("%d%d",&p->price,&p->usold);
    bill=billamt(p);
    printf("bill=%d",bill);
    getch();
}
int billamt(struct prod *i)
{
    int b;
    b=(i->price*i->usold);
    return b;
}
Run Code Online (Sandbox Code Playgroud)

案例2:在内部声明main()给出错误

[错误]输入'main():: prod',没有用于通过链接[-fpermissive]*声明函数'int billamt(main():: prod*)'的链接

#include<stdio.h>
#include<conio.h>
int main()
{
    struct prod
{
    int price,usold;
};


    struct prod *p,a;

    int billamt(struct prod *);
    int bill;
    printf("enter the values \n");
    scanf("%d%d",&p->price,&p->usold);
    bill=billamt(p);
    printf("bill=%d",bill);
    getch();
}
int billamt(struct prod *i)
{
    int b;
    b=(i->price*i->usold);
    return b;
}
Run Code Online (Sandbox Code Playgroud)

Sou*_*osh 13

在内部main()或外部声明结构的位置main()

  1. 首先,我认为你的意思是"定义",而不是"声明".

  2. 其次,没有这样的规则,你可以定义你想要的任何地方.这完全取决于定义的范围.

    • 如果在内部定义结构main(),则范围仅限于main().任何其他函数都看不到该定义,因此无法使用该结构定义.

    • 如果在全局范围内定义结构(即,外部main()或任何其他函数),则该定义可全局使用,并且所有函数都可以查看和使用结构定义.


Som*_*ude 4

它与作用域有关,当您在函数内部定义结构时main,它仅在函数的作用域中定义main,因此billamt函数无法知道它。