【发布时间】:2021-12-18 23:27:12
【问题描述】:
如果我有一个函数int foo(const int A),我可以进行以下编码吗?
int (*Mypointer)(const int);
Mypointer = &foo;
另外,我是否还允许在函数指针的声明中做以下没有const的事情?
int (*Mypointer)(int);
Mypointer = &foo;
另一个有趣的情况是,如果我有 int foo(int A) 并且我声明了这一点
int(*Mypointer)(const int);
Mypointer = &foo;
我遇到了分段错误
【问题讨论】:
-
你试过了吗?
-
我理解对 (2) 的怀疑,但为什么 (1) 是非法的?
-
是的。刚试了一下。我发现(1)和(2)都有效。另一个有趣的情况是,如果我有
int foo(int A)并且我声明了 ``` int(*Mypointer)(const int);我的指针 = &foo; ``` 我得到了分段错误。我在问题中编辑了这个案例 -
重要提示:违反“const”应该会给你一个COMPILE错误。 不一定运行时“分段违规”。 Apples and oranges!
标签: c++ pointers function-pointers