c - 静态指针
问题描述
我的作业有问题,我想知道你是否可以帮助我。这是我的代码:
#include <stdio.h>
#define ARRSIZE 1000
int main(){
f1();
f2();
f3();
return 0;
}
void f1(){
static int n;
n++;
char arr[ARRSIZE];
static long int *addr=arr;
printf("Call #%d at %d\n",n,addr);
if(n<10)
f1();
}
void f2(){
}
void f3(){
}
这是错误:
error: initializer element is not constant
谢谢你。
解决方案
您不能使用局部变量初始化静态变量,因为初始化程序必须是常量(它实际上是在程序启动时初始化的,而不是在调用函数时,就像全局静态变量一样)。
您可以做的是将其初始化为NULL
,并在您的代码中检查这一点。第一次调用该函数时,它将具有此值,您可以重新分配它。这个新值将在调用中保留,因此不会在后续调用中更新。
void f1(){
static int n;
n++;
char arr[ARRSIZE];
static long int *addr = NULL;
if (addr == NULL) {
addr = arr;
}
printf("Call #%d at %d\n",n,addr);
if(n<10)
f1();
}
推荐阅读
- svg - 响应式 base64 图像
- c# - Linux OS(buildroot)上的Visual Studio远程调试(ssh)?
- flutter - Flutter WidgetTest 无法点击 TextSpan
- node.js - 错误:未设置访问、刷新令牌或 API 密钥。谷歌 Youtube API V3
- reactjs - 根据 Formik 表单中的另一个选择重新填充选择下拉列表
- vue.js - 即使满足条件,Vue v-if 也不起作用(Font Awesome 图标未更新)
- node.js - GraphQL 和猫鼬有什么区别?
- javascript - 为什么 app.use(app.static(...)); 不工作?
- r - R中函数的输出随输入的数量而变化
- typescript - 画布上下文的包装类