当前位置:编程学习 > C/C++ >>

变量定义一个奇怪的问题,求解释

[cpp]  
#include "stdio.h"  
#include <string>  
  
int add()  
{  
        int a ;  
        int b = 2;  
        a = a+b;  
        printf("%d\n", a);  
        return 0;  
}  
  
void cat()  
{  
        char st1[] = "bbbbbbb";  
        char tt[50];  
        strcat(tt, st1);  
        printf("%s\n",tt);    
}  
  
int main()  
{     
    //循环体内定义在编译的时候只定义一次,空间是同一个空间  
    for (int j=0; j<2; j++)  
    {  
        char st1[] = "bbbbbbb";  
        char tt[50];  
        strcat(tt, st1);  
        printf("循环内%s\n",tt);  
    }  
    printf("\n");  
  
    //地址空间没有变化,但内容清空了,很神奇!???????????????!!  
    for (int i=0; i<3; i++)  
    {  
        cat();  
        add();  
    }  
    printf("\n");  
    //出了循环体,地址空间被清空。  
      
    //对于方法如果不清空,变量是在同一个空间上的。  
    cat();  
    cat();  
    {  
        cat();  
    }  
    printf("\n");  
    //不通作用域同名变量空间不通  
    {  
        char st1[] = "bbbbbbb";  
        char tt[50];  
        strcat(tt, st1);  
        printf("小作用域1%s\n",tt);  
    }  
      
    {  
        char st1[] = "bbbbbbb";  
        char tt[50];  
        strcat(tt, st1);  
        printf("小作用域2%s\n",tt);  
    }  
  return 0;   
}  
 
 
定义变量一定要注意初始化,注意清空呀@!
 
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,