簡體   English   中英

為什么我們在編程中真的需要指針,特別是 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 並返回一個指向該 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM