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