在main()或main()之外声明结构的位置?
案例1:在main()
之外声明的结构正常工作
#include #include 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; }
情况2:在main()
内部声明给出错误
[错误]输入’main():: prod’,没有用于通过链接[-fpermissive] *声明函数’int billamt(main():: prod *)’的链接
#include #include 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; }
在
main()
或main()
之外声明结构的位置?
-
首先,我认为你的意思是“定义”,而不是“声明”。
-
其次,没有这样的规则 ,你可以定义你想要的任何地方。 这完全取决于定义的范围 。
-
如果在
main()
定义结构,则范围仅限于main()
。 任何其他函数都看不到该定义,因此无法使用该结构定义。 -
如果在全局范围中定义结构(即,在
main()
或任何其他函数之外),则该定义可全局使用,并且所有函数都可以查看和使用结构定义。
-
它必须关于作用域 ,当你在main
函数中定义结构时,它只在main
函数的范围内定义,所以billamt
函数无法知道它。
结构是一个类似的数组,只有Array的主要区别只能包含相同类型的值,但结构可以有不同类型的值,所以如果你需要全局实现结构(全局意味着它也可以在任何其他函数中使用)在main之外定义它,如果你只想在main函数中使用你的结构,在它里面定义它。 快乐编码:-)