〃忝書γě渎ぐ 发表于 2020-2-24 23:52:41

关于C++ new的使用问题

int* p = NULL;
    int i = 0;
    cin>>i;
    p = new ; //为什么会错,求用C++语法规率来说明一下。
    for(i = 0;i < 10;i++)
    {
      *(p+i) = i;
      cout<<i<<*(p+i);
    }
    delete[] p;

major_lyu 发表于 2020-2-24 23:52:42

本帖最后由 major_lyu 于 2020-2-25 12:11 编辑

int* p = NULL;
    int i = 0;
    cin>>i;
    p = new int; //这样就对了
    for(i = 0;i < 10;i++)
    {
      *(p+i) = i;
      cout<<i<<*(p+i);
    }
    delete[] p;

new 后面必须要有类或者类型名啊。不然编译器怎么知道你要new一个什么东西出来啊。想要new一个int数组,就是new int, n表示数组大小。
另外,你这个代码有个问题,如果输入的i小于10, 你for循环里面指针p+i在i超过输入的值时可能指向一个未知的地址。虽然不会报错,但是会比较危险。因为你有可能会修改掉别的程序或者变量对应的内存单元的数据,导致数据错误。

〃忝書γě渎ぐ 发表于 2020-2-25 00:26:55

major_lyu 发表于 2020-2-25 00:09
new 后面必须要有类或者类型名啊。不然编译器怎么知道你要new一个什么东西出来啊。想要new一个int数组 ...

    int i = 0;
    cin>>i;
    p = new int; 但是这一行报错是什么原因呢?

major_lyu 发表于 2020-2-25 00:33:30

本帖最后由 major_lyu 于 2020-2-25 00:39 编辑

〃忝書γě渎ぐ 发表于 2020-2-25 00:26
int i = 0;
    cin>>i;
    p = new int; 但是这一行报错是什么原因呢?

不会报错啊!这一行会分配一个存放int变量的内存,并把变量地址赋给p,但是变量的值时随机的。
如果还有错,发完整代码,和报错信息
页: [1]
查看完整版本: 关于C++ new的使用问题