学习第17天

C语言

  1. 局部变量、

    1. 函数内定义的变量、只能在本函数内使用、

    2. 可以调用其它函数、但是其它函数仍然无法使用调用者的变量、

    3. 不同的函数可以使用相同名称的变量、互补干扰、

    4. 形式参数、也可视为局部变量、

    5. 在复合语句中定义的变量、仅在复合语句中有效、该种复合语句成为——程序块、

      1. {
            int a;
            c=5
        }
        
  2. 全局变量

    1. 函数外定义的变量、

      1. #include<stdio.h>
        int p =1,q = 5;//函数外定义的变量、全局变量
        int main()
            
        {
            
        }
        
    2. 、可以让其它函数共用、

    3. 优点

        	1. 增加了函数与函数之间的数据联系、如果一个函数改变了全局变量的值、就能影响到其它的函数、
                  	2. 相当于各个函数之间有传递的直接通道、不在需要通过实参和形参来传递数值、
      
    4. 缺点

        	1. 全局变量在整个程序的周期运行都占用内存、而不像函数内部的局部变量、用完会被回收
                  	2. 降低了函数的通用性
                  	3. 函数在执行时依赖外部的全部变量
                  	4. 如果程序迁移则需要将外部变量一起迁移
       	2. 降低了程序的清晰性呵呵可读性、
       	3. 
      
    5. 如果某个函数想引用它后面定义的全部变量、则可以用一个关键字——extern——来做一个外部变量说明、表示该变量在函数外部定义、

      1. extern  函数名
        
      2. 相当于提前声明

      3. 也就是一个函数不能使用某一个变量可以在此函数前用exten来声明这个变量、

      4. a函数想使用b函数的局部变量、可以在a函数前使用extern来声明有此函数、便可实现使用b函数的局部变量

      5. 外部变量说明可以多次、而且不分配内存、

      6. extern——仅仅是为了引用变量而做的声明

  3. 局部变量是在函数内定义的变量所以变量的有效域便是整个函数、而全局变量则是在函数外定义所以整个源文件都可以使用这个变量、而程序块则是范围更小的范围内使用变量、所以注意其变量的使用范围便可、

  4. 、全部变量————慎用、

  5. 定义分配内存、声明不分配内存、

  6. 如果全局变量和局部变量同名、则在局部变量使用范围内全局变量不起作用、——全局变量的值也不受其影响、

  7. int	 a = 100, b = 500;//定义
    void c(int a, int b)
    {
    	a = 10;//函数内的变量——局部变量
    	b = 200;//函数内的变量——局部变量
    	printf("a=%d
    ", a);//局部变量的值改变
    	printf("b=%d
    ", b);//局部变量的值改变
    	return;//返回——返回后局部变量的值便没有啦、因为内存的被释放掉啦、
    }
    int main()
    {
    	a = 3;//重新赋值 
    	b = 9;//重新赋值 
    	printf("a=%d
    ", a);
    	printf("b=%d
    ", b);
    	c(a, b);
    	printf("a=%d
    ", a);//不受局部变量的影响
    	printf("b=%d
    ", b);//不受局部变量的影响
    }