c语言定义函数有变量,C语言定义变量

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

显然提问者没有搞清楚 函数 声明和定义 这两个概念

成都创新互联是一家企业级云计算解决方案提供商,超15年IDC数据中心运营经验。主营GPU显卡服务器,站群服务器,服务器机柜租赁,海外高防服务器,机柜大带宽、租用·托管,动态拨号VPS,海外云手机,海外云服务器,海外服务器租用托管等。

第一行void abc(void); 是声明,不是定义,因为没有函数体,只是告诉Main函数,你要调用的abc函数是有的,定义在后面

Main函数中的abc函数是调用,调用当然可以多次使用,函数的作用也在于此,一次定义,多次调用,体现代码复用的好处

最后void abc(void){ …… } 到结束,是定义了,说明函数干什么的

ky 写 abc函数里 是推荐的方式,成为局部变量,函数调用完后,ky可被系统释放内存

ky不能写在Main函数里,abc将无法访问其他代码块(花括号内)的局部变量

ky可以写在最外面,即不在任何代码块内,且要写最顶行(建议),这样后续的函数都可以访问该(全局)变量,但一般建议不要过多使用全局变量

C语言中,如何定义一个变量,使其既可以在主函数中使用,也可以在子函数中使用

把变量定义在主函数之外,即把变量设置为全局的。

一般我们都把变量的定义放在函数中,因此变量的范围就是在本函数中。可是如果定义在所有函数的外面,这样所有的函数中,都可以使用本变量。

你可以试一下这个程序。定义一个全局变量a,在主函数中进行赋值,然后在子函数中进行输出,结果是5.

#includestdio.h

int a;

void func();//函数声明

int main()

{

a=5;

func();

}

void func()

{

printf("%d\n", a);

}

+++++++++++++++++++++++++++++++++++++++++++++++++++

当然,除了定义全局变量这个方法,还有其他的方法,那就是指针。在子函数的参数中传递变量的地址,依然可以使用该变量,依然能够改变该变量的值。因为主函数和子函数的变量共用的是同一个地址的变量,因此,不管在哪个函数中对变量进行操作,都会影响变量。

比如下面这个程序,在主函数中a的值为5,将变量a的地址传递过去,子函数将该地址中的变量的值设置为3,然后主函数输出,结果却是3.

#includestdio.h

void func(int *b);//函数声明

int main()

{

int a=5;

func(a);//把变量a的地址传递过去

printf("%d\n", a);

}

void func(int *b)

{

*b=3; //将地址b中变量的值设置为3

}

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

静态变量,特点就是只初始化一次。所以在这里b是只定义一次的。

于是

1 会占用,但是很少。 和全局变量定义差不多

2 没有,因为不存在多次定义,只定义了一次。

3 除了生命周期,最大的差别就是作用域了。

局部变量,只能在函数内访问,而全局变量就是谁都能访问,这样很容易出现混乱,尤其是多线程的情况下。

除此外,非静态的局部变量,在函数退出后内存就释放了,如果所有变量都定义成全局的,那明显是对内存的一种浪费。

c语言中主函数中定义的变量,调用函数里还需要再定义吗?

c语言中主函数中定义的变量只能在主函数中使用,所以你还得再定义一个变量。

当然,捏可以把主函数中定义的这个变量传递给被调用的函数作为参数。

例如

void

fun(int

x)

{

}

main()

{

int

num=9;

fun(9);

}

但是如果你要在被调用函数中使用这个变量例如

fun()

{

num++;

}

像这样,就是错的,编译器会报错,main中定义的变量是局部变量,只能在main中使用。

你可以在main外部定义一个变量,这样在被调用函数中也就可以使用了。


本文标题:c语言定义函数有变量,C语言定义变量
网页网址:http://azwzsj.com/article/hsispc.html