在循环中声明变量

declaring variables in loop

我想知道每当您在循环中声明一个变量时,它在该循环中具有相同的内存地址?为什么会这样?在循环之后,如果我再次声明它,它有另一个内存地址。

如果它有相同的地址,我该如何做这样的事情

 `char *p[100]
     cin>>n;
     for(i=0;i<n;++i)
      {char b[100];
         cin>>b;
        p[i]=b;
      }`

最后当我想显示 p[i] 的值但 b 具有相同的地址并且 i 最终在 p[i] 中具有相同的地址。如果没有动态内存分配,如何做到这一点?可以这样做吗?

如果您在循环内声明一个变量,它的内存只分配一次,它的值可能会在循环期间改变,但不会改变地址,这就是为什么它会显示相同的内存。 如果你在循环之后再次声明它那么这个变量不在循环范围内,C 中的变量具有块范围。然后将其视为新变量并为其分配新内存。

阅读有关变量范围的更多信息。 http://www.geeksforgeeks.org/scope-rules-in-c/