如果申请一个局部一维数组变量被多次调用,那么该变量每次申请的都是同一个内存地址。
比如:
代码1:
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE 1024
int main(){
for(int i=1;i<10;i++){
/*char s[MAX_LINE];
printf("\n第%d次初始化:%s\n",i,s);
strcat(s,"a");
printf("\n第%d次:%s\n",i,s);*/
int s[MAX_LINE];
s[i]=i;
for(int j=1;j<10;j++){
printf("%d,",s[j]);
}
printf("\n");
}
}
dev——c++上运行结果:
1,11080256,0,128,0,11080256,0,100,0,
1,2,0,128,0,11080256,0,100,0,
1,2,3,128,0,11080256,0,100,0,
1,2,3,4,0,11080256,0,100,0,
1,2,3,4,5,11080256,0,100,0,
1,2,3,4,5,6,0,100,0,
1,2,3,4,5,6,7,100,0,
1,2,3,4,5,6,7,8,0,
1,2,3,4,5,6,7,8,9,
这里边重复调用int s[MAX_LINE];10次,每次 执行s[i]=i;但是运行结果是最终变成了有序的,说明每次申请的地址都是一样的。
代码2:
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE 1024
int main(){
for(int i=1;i<10;i++){
char s[MAX_LINE];
printf("\n第%d次初始化:%s\n",i,s);
strcat(s,"a");
printf("\n第%d次:%s\n",i,s);
/*int s[MAX_LINE];
s[i]=i;
for(int j=1;j<10;j++){
printf("%d,",s[j]);
}
printf("\n");*/
}
}
运行结果:
第2次初始化:a
第2次:aa
第3次初始化:aa
第3次:aaa
第4次初始化:aaa
第4次:aaaa
第5次初始化:aaaa
第5次:aaaaa
第6次初始化:aaaaa
第6次:aaaaaa
第7次初始化:aaaaaa
第7次:aaaaaaa
第8次初始化:aaaaaaa
第8次:aaaaaaaa
第9次初始化:aaaaaaaa
第9次:aaaaaaaaa
这里边重复调用char s[MAX_LINE];10次,每次 执行strcat(s,"a");;结果是进行9次s的结果是aaaaaaaaa;