首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

vc++ 6.0用不了动态数组?该怎么处理

2013-01-23 
vc++ 6.0用不了动态数组?#include iostreamusing namespace stdint main(){int i,nchar *pnew char[n

vc++ 6.0用不了动态数组?
#include <iostream>
using namespace std;
int main()
{
    int i,n;
    char *p=new char[n];
    cout<<"输入数组大小:";
    cin>>n;
    cout<<"输入数组的元素"<<endl;
    cin>>p;
    cout<<p;
    delete [] p;
    return 0;
}

就这么一段代码,在vc里运行竟然会出现错误,怎么回事呢??
在code blocks里是没事的,要怎么改才能在vc上运行呢?
[解决办法]
好象你得将申请动态数组的语句,,放到输入n的值的语句之后吧。。要不然铁定过不去啊。。
[解决办法]
1 n是垃圾值 
2 如果n是在创建动态数组之前完成赋值 你输入的字符串最多只能是n-1个字符
[解决办法]
你把那个cin>>n放到new关键字前面,你开辟空间之前不知道具体的n值怎么不出错啊。
[解决办法]
你这个代码new 的空间和你输入的n的大小不相同...

你在new的时候还没有对n赋值,因此此时的n是一个随机值,所以极有可能你输入字符串之后就溢出了。

cout在对char*执行的之后,要去找'\0'符。你输入的字符串长度如果超过了new 的空间,那你的字符串就么有这个符,那就很危险了。

热点排行