C语言本地变量的规则

发布时间 2023-04-09 11:19:36作者: 周周周777

以以下一段代码为例:

 1 #include <stdio.h>
 2 //以下代码是否能交换两个变量的值?
 3 void swap(int a,int b);
 4  
 5 int main()
 6 {
 7     int a=5;
 8     int b=6;
 9     
10     swap(a,b);
11     
12     printf("%d,%d",a,b);
13      
14     return 0;
15  } 
16  
17  void swap(int a,int b)
18  {
19      int t=a;
20      a=b;
21      b=t; 
22 //     printf("%d,%d",a,b);
23  }

结果是5,6,并没有得到交换,因为main和swap是两个不同的块,swap内部做了交换,但是如果离开那么就失效了

1.本地变量是定义在块内的:

它可以是定义在函数的块内,也可以是语句的块内,也可以随便拉一对大括号来定义变量

2.程序进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了

3.块外面定义的变量在里面仍然有效,块里面定义了和块外面同名的则会掩盖块外面的,不能在同一个块内定义同名的变量

{
        int a=111;
        printf("a==%d",a);
    }
    printf("a==%d",a);

 

4.本地变量不会被默认初始化,参数在进入函数的时候被初始化了