我想在函数中使用静态指针以指向多个整数。编程时尚不知道整数的数量,但在首先使用该函数之前,它在运行时是已知的。所以我想给函数一个参数n并告诉它为指针分配n个整数的内存空间并保留它。但是,我了解到静态变量必须在它们的声明中启动,这似乎不起作用,因为一方面我需要*将它们声明为指针,另一方面我需要变量名而不用*来分配记忆。对于静态指针,正确的声明和初始化是什么?我正在努力节省时间,否则任何我能买得起的计算机都需要多年才能完成我的程序。当我了解到局部变量比全局变量更快时,指针有时比我正在试验的数组更快。即使在较小的测试运行中,该功能也会被使用数十亿次,因此欢迎任何加速它的想法。指针的使用也应该使程序中的某些函数更好地协同工作,但如果它们是本地的并且每次调用函数时都被初始化,我不希望它真的很快。
答案 0 :(得分:3)
像这样:
void foo() {
static int* numbers = NULL;
if (numbers == NULL) {
// Initialize them
}
}
为并发问题做好准备。为什么不使它成为一个全局的并具有正确的init_numbers()和user_numbers()函数,以便您控制init何时发生?
答案 1 :(得分:1)
我会尝试这样的事情:
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
}
答案 2 :(得分:0)
您可以将指针初始化为null并稍后重复使用。