当前位置:文章写作网 >日记 >日记 >c语言变量之局部变量

c语言变量之局部变量

2008-06-23 13:20 作者:tshfang 阅读量:4835 推荐7次 | 我要投稿

一、什么是变量

变量是内存中的位置,其中放置程序可以修改的值。c变量必须在使用前定义。

例如:

type variable;

type必须是有效的c数据类型。

下面是实际的例子:

int a,b,c;

double e,f;

二、变量的分类及介绍

根据变量在程序中的位置,可以分为一下几种

1、函数内 我们称之为局部变量。

局部变量仅存在定义他们的代码块中,即起始于开大括号,止于闭大括号。

在一个代码块中的变量与另一个代码块中变量同名,没有任何关系,不会造成影响。但是最好不要同名。

变量名称要见名知意。

例如:

void fun(void);

void fun1(void);

int main(void)

{

fun();

fun1();

getch();

}

void fun(void)

{

int a=10;

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

}

void fun1(void)

{

int a=100;

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

}

程序输出结果是:

fun a is 10

fun1 a is 100

变量a被定义了2次,fun和fun1中的a互不相干。每个a变量仅在被定义的块内可知的。

局部变量可以在任何代码块中定义,不单单在函数的代码块中。例如:

#include <stdio.h>

void fun(void);

int main(void)

{

fun();

getch();

}

void fun(void)

{

int a;

printf(" Please input an integer!\n ");

scanf("%d",&a);

if(a==1)

{

char s[30];

printf("please input your name\n");

scanf("%s",s);

printf("your name is %s\n",s);

}

if(a==2)

{

int b;

b=10;

printf("b is %d\n",b);

}

}

局部变量s和b在if代码块的入口出建立,在出口处消亡。

当内部块的变量和外部变量同名的时候,内部块的变量屏蔽内部块的变量。例如:

int main(void)

{

int a;

a = 10;

if(a == 10) {

int a; /* this x hides the outer x */

a = 99;

printf("Inner a is : %d\n", a);

}

printf("Outer a is : %d\n", a);

getch();

return 0;

}

程序输出结果为:

Inner a is 10

Outer a is 99

if程序块中的a屏蔽了外部的变量a,当if程序块结束后,外部a又成了可见的了。

c89中变量的声明,必须在块的开头,如果在c89的编译器下编译如下代码将提示错误:

int main(void)

{

int a;

a = 10;

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

int j;

j=200;

printf("j is : %d\n", j);

getch();

return 0;

}

然而在c99中向上面的例子是完全合法的。程序结果是:

a is 10

j is 200

2、函数参数 我们称之为形式参数简称形参。

形参的作用和函数内的任何变量相同, 形参在函数后面的()中定义 例如:

int char_in_srting(char *s,char c);

int main(void)

{

char string[30],achar;

printf("Please input a char\n");

scanf("%c",&achar);

printf("Please input a string\n");

scanf("%s",string);

int a;

a=char_in_srting(string, achar);

if (a==1) printf("%c is in %s",achar,string);

else printf("%c is not in %s",achar,string);

getch();

return 0;

}

int char_in_srting(char *s, char c)

{

while(*s)

if(*s==c) return 1;

else s++;

return 0;

}

运行程序

Please input a char

我们输入 c字符

Please input a string

我们输入 asdf

程序的输出结果是: c is not in asdf。

形参和局部变量一样,可以赋值,允许在任何表达式中使用。函数结束的时候变量自动销毁。

3、所有函数之外 我们称之为全局变量

全局变量在程序中总是可见的,可以被任何代码使用,在程序的执行期间,全局变量可以保存其值。

#include <stdio.h>

int bl;

void fun1(void);

void fun2(void);

void fun3(void);

int main(void)

{

bl = 100;

fun1();

getch();

return 0;

}

void fun1(void)

{

int temp;

temp = bl;

fun2();

printf("fun1 bl is %d\n", bl);

printf("fun1 temp is %d\n", temp);

fun3();

printf("after fun3 ,fun1 bl is %d\n", bl);

}

void fun2(void)

{

int bl;

for(bl=1; bl<10; bl++)

printf("fun2 bl is %d\n",bl) ;

}

void fun3(void)

{

bl+=100;

}

main fun1和fun3都没有声明bl,但是都能够使用bl。fun2中使用了局部变量bl,屏蔽了全局变量bl。

main中赋值bl100,当fun3中更改bl,fun1中立刻提现出来了。

在程序中尽可能的少用全局变量,当大量使用全局变量的时候,可能会引起程序错误和调试上的问题。

注:文章的程序代码全部通过dev c++5测试通过。

其他人在看啥

    《c语言变量之局部变量》的评论 (共 0 条)

    • Guest::ding
    • Guest::manfen