标签:程序 使用 main 初始化 clu 全局 导致 cpp 就是
//作用域
/*
任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问。C 语言中有三个地方可以声明变量:
在函数或块内部的局部变量
在所有函数外部的全局变量
在形式参数的函数参数定义中
*/
//局部变量
/*
在某个函数或块的内部声明的变量成为局部变量,它们是能在该函数或该代码块的内部使用。
局部变量在函数外部是不可知的举个栗子
*/
#include <stdio.h>
int main01()
{
//局部变量声明
int a,b;
int c;
//初始化
a = 10;
b = 20;
c = a+b;
printf("a=%d,b=%d,c=%d\n",a,b,c); //a=10,b=20,c=30
return 0;
}
//全局变量
int g=22;
int main02()
{
//局部变量声明
int a,b;
int g;
// 变量的定义
a = 1;
b = 2;
g = a+b;
printf("a=%d,b=%d,g=%d\n",a,b,g);//a=1,b=2,g=3
//程序内,局部变量和全局变量的名字可以相同,局部变量会覆盖掉全局变量
//当然这是在这个函数内,函数执行完毕之后,局部变量就被销毁了
//就是说,先从自己的作用域里面找,找到了就用,找不到再从全局变量里面找
return 0;
}
//全局变量声明
int a = 100;
int main03()
{
//声明局部变量
int a=10;
int b=20;
int c=0;
int sum(int,int);
printf("a in main=%d\n",a); //a in main=10
c = sum(a,b);
printf("c in main=%d\n",c); //c in main=30
return 0;
}
int sum(int a, int b)
{
//这里的a由形参决定,关键看调用sum的时候传的值是多少
//在main中,将a传进sum中,main中已经定义了a=10;所有不会再从全局变量中找
printf("a in sum=%d\n",a); //a in sum=10
printf("b in sum=%d\n",b); //b in sum=20
return a+b;
}
//我们再来验证一下,看看如果在函数内部不定义局部变量
int c=50;
int main04()
{
int print(int , int);
int a=20;
//需要传入a和c,a在内部定义了,但是c没有,于是从全局变量中找
//所以传入的是20和50
//c=20+50=70
c = print(a, c);
printf("c in main = %d\n",c); //c in main = 70
}
int print(int a, int c)
{
printf("a in print = %d\n",a); //a in print = 20
printf("c in print = %d\n",c); //c in print = 50
return a+c;
}
//初始化局部变量和全局变量
//局部变量被初始化时,系统不会对其初始化,强行打印会得到一个很大的值。因此必须自己手动初始化
//定义全局变量时,系统会自动进行初始化
/*
数据类型 初始化默认值
int 0
char ‘\0‘
float 0
double 0
pointer NULL
*/
//正确地初始化变量是一个好习惯,否则程序有时会产生一些意想不到的结果。
//因为未初始化的变量会导致一些垃圾值
//形参
/*
C的形参与实参
形式参数:只是生命一个作为参数的变量,并未直接进行赋值使用,而实际参数则相反
*/
//举个栗子
int test(int, int); //形参,只声明
int main()
{
int result;
result = test(5,3);//实参,已赋值
printf("result=%d\n", result); //result=8
}
int test(int a,int b)
{
a=a+b;
return a;
}
标签:程序 使用 main 初始化 clu 全局 导致 cpp 就是
原文地址:https://www.cnblogs.com/traditional/p/9464108.html