繁体   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