c语言一个函数变量 c语言在一个函数内定义的变量

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语言一个函数里是不是不能有太多变量

函数内的局部变量的存储有内存限制,是没错的,这个限制是堆栈的大小:64K

一般来说,你很难定义这么多变量,除非使用了大数组,在多数编译器下,int a[1000000]的定义是不可实现的,这种情况可以使用指针来解决,所以,编程中只要不使用大数组,不必考虑太多变量的问题。

解决变量多的方法,拆分多个函数是一方面,C++封装、作用域、以及指针的应用,都可以避免堆栈溢出的问题。

C语言中 在一个函数中用 static修饰的变量,还能给它赋上新值吗?

可以,static在C语言中是表示一个变量为静态变量的,而不是常量,也不是不可变的变量。所谓的静态变量有两种情况,一种是静态全局变量,一种是静态局部变量。

像在VB,C#,C,C++,Java,PHP,Objective-C,JavaScript中我们可以看到static作为关键字和函数出现,在其他的高级计算机语言如FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、PROLOG、Ada等语言中也是有出现的,只是有着不同的作用,对于其具体作用,读者有需要的时候是可以具体查阅的。

扩展资料:

静态全局变量有以下特点:

该变量在全局数据区分配内存;未经初始化的静态全局变量会被程序自动初始化为0(在函数体内声明的自动变量的值是随机的,除非它被显式初始化,而在函数体外被声明的自动变量也会被初始化为0);

静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量。

C语言中,在同一个函数下局部变量和局部静态变量可以同名吗?

不可以,同一作用域的变量名不允许相同, 不同作用域下的同名变量起作用的是最后一层。


分享文章:c语言一个函数变量 c语言在一个函数内定义的变量
URL地址:http://scjbc.cn/article/doipsps.html

其他资讯