其他c++程序员需要一些帮助

Fellow C++ programmer needs some help

本文关键字:帮助 c++ 程序员 其他      更新时间:2023-10-16
 // rememb-o-matic
 #include <iostream>
 #include <new>
 using namespace std;
 int main ()
 {
   int i,n;
   int * p;
   cout << "How many numbers would you like to type? ";
   cin >> i;
   p= new (nothrow) int [i];
   if (p == 0)
     cout << "Error: memory could not be allocated";
   else
   {
     for (n=0; n<i; n++)
     {
       cout << "Enter number: ";
       cin >> p[n];
     }
     cout << "You have entered: ";
     for (n=0; n<i; n++)
       cout << p[n] << ", ";
     delete[] p;
   }
   return 0;
 }
现在

为什么它们的括号括在变量i中?

 p= new (nothrow) int [i];

为什么他们的两个for语句和for语句到底做什么?

为什么删除[]p而不是变量p ?

为什么它们的a括号括在变量i中? ,
为什么删除[]p而不是变量p?

 p= new (nothrow) int [i];

动态分配i元素的int数组

 delete []p;

删除动态分配的数组


c++中动态分配的基本规则是:

  • 如果你使用new动态分配内存,使用delete释放内存。
  • 如果你使用new []动态分配内存,使用delete []释放内存。

另外,请注意,您正在使用new操作符的nothrow版本,它基本上返回null,如果某些错误条件并且不抛出异常,这允许c++代码与遗留的C代码兼容,后者在内存分配后使用空检查(malloc在失败时返回空)。


for语句到底是做什么的?

for语句是一个条件循环构造,它继续执行循环,直到condition为真。for循环的基本语法是:

for(;condition;)
{ 
    //doSomething
}

为什么它们的2 for语句?
代码中的第一个for loop获取来自用户的输入。它需要输入i次。

第二个for loop输出数组的内容。


建议你拿起一本好的c++书,通读基础知识以了解更多。

delete[]表示将数组释放回系统,if语句的无括号是可选的只是表示第一行将在true时执行,我认为你真的需要学习一些c++和编程的基础知识,找一本好书或谷歌教程有很多好的

这只是c++的语法。

  1. new int [i]表示我们想要分配内存来存储i个整数。
  2. delete [] p删除对p的内存绑定,如果省略[],编译器认为p指向*p类型的单个实例。如果指令包含[]编译器尝试删除数组元素。