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

来源:互联网 发布:淘宝山东领航者怎么样 编辑:程序博客网 时间:2024/06/04 19:07
#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;}


 

定义变量一定要注意初始化,注意清空呀@!

原创粉丝点击