C++程序员需要一些帮助

0 c++

 // 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;
 }
Run Code Online (Sandbox Code Playgroud)

现在,

为什么他们的括号包含在变量i中?

 p= new (nothrow) int [i];
Run Code Online (Sandbox Code Playgroud)

为什么他们的2个for陈述和for陈述完全是什么?

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

Alo*_*ave 5

为什么他们的括号包含在变量i中? &
为什么删除[] p而不是变量p?

 p= new (nothrow) int [i];
Run Code Online (Sandbox Code Playgroud)

动态分配元素int数组i.

 delete []p;
Run Code Online (Sandbox Code Playgroud)

删除动态分配的数组.


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

  • 如果您使用new动态分配内存,请使用delete取消分配内存.
  • 如果您使用new []动态分配内存,请使用delete []取消分配内存.

另外请注意,您所使用nothrow的版本new运营商,它基本上返回null如果一些错误情况并没有抛出异常,这使得C++代码是与其后的内存分配使用空检查遗留的C代码兼容(malloc的回报失败时为null).


请问一个for声明做什么呢?

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

for(;condition;)
{ 
    //doSomething
}
Run Code Online (Sandbox Code Playgroud)

为什么他们的2个陈述?代码中
的第一个for loop获取用户的输入.它需要输入i次数.

第二个for loop打印出数组的内容.


建议你学习一本好的C++书籍并阅读基础知识以了解更多信息.