我想知道每当你在循环中声明一个变量时它在内存中的相同地址?为什么会这样?在循环之后,如果我再次声明它,它有另一个内存地址。
如果它有相同的地址我怎么能做这样的事情
`char *p[100]
cin>>n;
for(i=0;i<n;++i)
{char b[100];
cin>>b;
p[i]=b;
}`
最后,当我想显示p [i]的值但b具有相同的地址时,我最终在p [i]中使用相同的地址。如果没有动态内存分配,怎么办呢?它可以这样做吗?
答案 0 :(得分:1)
如果在循环内部声明一个变量,它的内存只分配一次,它的值可能会在循环期间发生变化但不能解决这就是为什么它会显示相同的内存。 如果你在循环后再次声明它,那么这个变量不在循环范围内,C中的变量有块范围。然后将其视为新变量并为其分配新内存。
阅读有关变量范围的更多信息。 http://www.geeksforgeeks.org/scope-rules-in-c/