[英]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.