注册 登录
编程论坛 C++教室

C++的定义

shaoyuan 发布于 2008-09-07 10:30, 817 次点击
#include<iostream.h>
#include<stdlib.h>
void main(){
    int *p;
    p=new int [8];
    for(int i=0;i<8;i++)
    p[i]=i*i;
    p=(int*)realloc(p,12*sizeof(int));
    
    for(i=8;i<12;i++)
    p[i]=2*i;
    for(i=0;i<12;i++)
    cout<<p[i]<<"  ";
    cout<<endl;
    free(p);
}
上面的程序为什么在C—FREE4.0的编译器上不能通过编译呢?
[Error] E:\C编辑器\C-FREE~1\temp\Untitled3.cpp:10: name lookup of `i' changed for new ANSI `for' scoping
[Error] E:\C编辑器\C-FREE~1\temp\Untitled3.cpp:6:   using obsolete binding at `i'



改程序在Microsoft Visual C++ 6.0上能够运行,应该是编译器问题了,多谢大家的帮忙!!!

[[it] 本帖最后由 shaoyuan 于 2008-9-7 12:43 编辑 [/it]]
5 回复
#2
b3b3baby2008-09-07 11:08
不知道,帮你顶了
#3
blueboy820062008-09-07 11:48
这涉及到作用域的问题吧...
由于i是在 for(int i=0;i<8;i++)
中定义的,因而引起了,在下面再次使用时的问题...
#4
無邪的睡脸2008-09-07 11:53
i具有语句作用域,只在定义的for循环中可见
要么定义在外面,要么下面再定义一个变量
#5
xyt_bluesky2008-09-07 12:10
通过编译错误提示明显可以看得出是那里错的啊!你也是刚学习这门功课的吧!
#6
shaoyuan2008-09-07 12:46
不好意思啊!这是我从课本上直接打出来的
1