为什么我们真的需要特别是 C++ 编程中的指针

Why do we really need pointers in Programming specifically C++

我真的无法理解动态分配和静态分配之间的区别,他们说动态分配在执行程序时发生,而静态分配仅在编译时发生,我们不能在执行时手动分配但是,

#include <iostream>
using namespace std;
int main()
{
   int size , a = 0;

   cout << "Enter the size of Array: ";
   cin >> size;

   int A[size][size];
   for(int i = 0 ; i < size ; i++)
   {
        for(int j = 0 ; j < size ; j++)
            cout << a++ << '\t';
        cout << endl;
    }

    system("pause");
    return 0;
}

此程序将在执行时分配数组大小。

动态分配的真正意义在于您可以控制被分配对象的生命周期。动态分配的对象存在,直到您取消分配它们。这与数组没有任何关系,尽管这通常是初学者首先学习分配的背景。

考虑这两个函数

int* bad()
{
    int x = 123;
    return &x;
}

int* good()
{
    int* x = new int(123);
    return x;
}

这两个函数都创建一个 int 和 return 指向该 int 的指针。

bad 函数不正确,因为 x 变量在函数退出时被销毁,所以它 return 是指向已被销毁的对象的指针。

good函数动态创建一个int,该对象永远不会被销毁(除非程序删除它)。所以这个函数是正确的。

顺便提一下,int size; ... int A[size][size]; 不是合法的 C++。一些编译器允许它,但其他编译器不允许。