簡體   English   中英

如何在C中初始化靜態指針?

[英]How can I initialize a static pointer in C?

我想在函數中使用靜態指針,以指向一些整數。 編程時尚不知道整數的數量,但在首先使用該函數之前,它在運行時是已知的。 所以我想給函數一個參數n並告訴它為指針分配n個整數的內存空間並保留它。 但是,我了解到靜態變量必須在它們的聲明中啟動,這似乎不起作用,因為一方面我需要*將它們聲明為指針,另一方面我需要變量名而不用*來分配記憶。 對於靜態指針,正確的聲明和初始化是什么? 我正在努力節省時間,否則任何我能買得起的計算機都需要多年才能完成我的程序。 當我了解到局部變量比全局變量更快時,指針有時比我正在試驗的數組更快。 即使在較小的測試運行中,該功能也會被使用數十億次,因此歡迎任何加速它的想法。 指針的使用也應該使程序中的某些函數更好地協同工作,但如果它們是本地的並且每次調用函數時都被初始化,我不希望它真的很快。

像這樣:

void foo() {
    static int* numbers = NULL;
    if (numbers == NULL) {
        // Initialize them
    }
}

為並發問題做好准備。 為什么不使它成為一個全局的並具有正確的init_numbers()和user_numbers()函數,以便您控制init何時發生?

我會嘗試這樣的事情:

void my_proc(int n)
{
    static int* my_static_pointer(0);

    if (my_static_pointer == 0)
    {
        my_static_pointer = malloc(sizeof(int) * n);
    }

    // check the allocation worked and use the pointer as you see fit
}

您可以將指針初始化為null並在以后重用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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