![](/img/trans.png)
[英]What does Tokens do and why they need to be created in C++ programming?
[英]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 並返回一個指向該 int 的指針。
bad
函數是不正確的,因為 x 變量在函數退出時被銷毀,因此它返回一個指向已被銷毀的對象的指針。
good
函數動態創建一個 int,該對象永遠不會被銷毀(除非程序刪除它)。 所以這個函數是正確的。
順便提一下int size; ... int A[size][size];
int size; ... int A[size][size];
不是合法的 C++。 一些編譯器允許它,但其他編譯器不會。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.