请向我解释是否有任何意义以及使用动态变量(确切地说是变量,而不是数组)有什么意义(除了以后可以简单地删除它们)?我查看了很多网站,到处都是他们只写动态数组的地方,我意识到如果我最初不知道数组的大小,最好让它动态化,等等。我明白了这一点:
int* a = new int[size];
但是为什么以及在什么情况下我需要这个:
int* a = new int(number);
除了可以在必要时创建/清除它之外,还有其他意义吗?
PS 我明白如何以及为什么需要动态数组,我只需要关于动态变量的解释!
是的,这有很深的含义,因为通过删除一个已经使用过的数组,你可以在这个地方放置另一个数组并使用它。此外,静态数组占用可执行文件中的空间(并且可执行文件变大),而动态数组不占用可执行文件中的空间(并且可执行文件变小)。
这也是动态数组的优点。在编译时通常不知道需要多少数据空间。对于静态数组,你必须最大限度地保留空间,这很不方便,如果只是因为不同机器上的 RAM 大小可以 不同的。动态数组没有这个缺点。
一般来说,动态数组允许更灵活地使用宝贵的系统资源——RAM。
UPD1:
首先,动态变量可以是更大数组的大小。具体来说,一个类可以包含一个大数组(并且不止一个),然后所说的所有内容都适用于该变量的单个实例。其次,许多不同类型的单个变量也可以在程序运行时动态创建和销毁,在运行时节省RAM并节省可执行文件的大小。同样,在编译时,您不知道程序执行将遵循哪个分支。并且根据分支,程序可能根本不会创建任何变量。因此该程序将节省 RAM。
UPD2:
但是,请记住,在堆上创建动态变量或数组非常耗时(与创建堆栈或静态变量相比)。因此,必须创造性地解决这个问题,必须在节省 RAM 和程序速度之间取得平衡。
这将创建一个 size 元素数组。
这里在堆上创建了一个 int,它用值 number 初始化。通常这不是必需的,但如果对象稍微复杂一点,则一直使用它。