69,335
社区成员
发帖
与我相关
我的任务
分享
static int val;
int a(void)
{
return val;
}
void b(int (*ptr)(void))
{
//这里想让val++,该如何实现?
}
static int val;
int *a(void)
{
return &val;
}
void b(int*(*ptr)(void))
{
(*(ptr()))++;
}
int main(void)
{
val = 0;
b(a);
printf("val=%d\n", val); //val=1
return 0;
}
static int val;
int* a(void)
{
return &val;
}
void b(int* (*ptr)(void))
{
int* p = ptr();
//*p操作的就是 val
}
b(a);//注意 a 不能加()
static int val;
int a(void)
{
val++;
return val;
}
void b(int(*ptr)(void))
{
ptr();
}
//调用
b(a);
//工程中含有若干文件,都属于是嵌入式的界面文件,属于同一类型
f1.c //含有static int val1, fun1() ,fun1()需要对val1进行操作。
f2.c //同上面的结构
f3.c //同上
因为 函数fun1,2,3功能一样,我就想把他们写成同一个函数。但是val1,2,3却不能由同一个全局来代替。所以我就想get到val123的值再操作。就搞的晕了
static int val;
int &a(void)
{
return val;
}
void b(int& (*ptr)(void))
{
((*ptr)())++;
}
这样就能实现val++了。这里的(*ptr)()就是val的引用。