C语言自定义函数中定义常量、变量的问题

C语言自定义函数中定义常量、变量的问题
在c语言中自定义一个函数,然后在这个函数里定义一个变量ky

void abc(void);

int main(void)
{
``````````
abc();
`````````````
abc();
}

void abc(void)
{
int ky;
ky=1;
while(ky<=10)
{
``````````
ky=ky+1;
}
}
然后在主函数里多次调用此函数,那么是不是算多次定义了呢,但编译器(vs2017)却没有错误提示!程序依旧运行!请问这个变量ky是应该写在自定义函数的外面、里面还是写在主函数里?

第1个回答  2017-07-01
显然提问者没有搞清楚 函数 声明和定义 这两个概念
第一行void abc(void); 是声明,不是定义,因为没有函数体,只是告诉Main函数,你要调用的abc函数是有的,定义在后面
Main函数中的abc函数是调用,调用当然可以多次使用,函数的作用也在于此,一次定义,多次调用,体现代码复用的好处
最后void abc(void){ …… } 到结束,是定义了,说明函数干什么的
ky 写 abc函数里 是推荐的方式,成为局部变量,函数调用完后,ky可被系统释放内存
ky不能写在Main函数里,abc将无法访问其他代码块(花括号内)的局部变量
ky可以写在最外面,即不在任何代码块内,且要写最顶行(建议),这样后续的函数都可以访问该(全局)变量,但一般建议不要过多使用全局变量
第2个回答  2017-07-01

    主函数里多次调用此函数,那么是不是算多次定义---不是,算一次定义

    变量ky是应该写在自定义函数的外面、里面还是写在主函数里---取决于业务需求,你上面的写法就可以

本回答被提问者采纳