假设布尔返回类型的C函数(布尔值可以实现为0和1的枚举或其他方式,但这并不重要):
boolean foo ()
{
//do something
return;
}
Run Code Online (Sandbox Code Playgroud)
这又回来了什么?它返回FALSE吗?或者只是退出函数而没有任何回报?函数期望从foo返回的函数会得到什么?
我读了几个类似的问题,C:字符指针和数组之间的差异,是什么个char []与char*S之间的区别?,char array []和char*array有什么区别?但他们似乎都不清楚我的怀疑.
我知道
char *s = "Hello world";
Run Code Online (Sandbox Code Playgroud)
使字符串不可变,而
char s[] = "Hello world";
Run Code Online (Sandbox Code Playgroud)
可以修改.
我怀疑的是,如果我这样做char stringA[LEN]; ,char* stringB[LEN];他们有什么不同吗?或者stringB在之前的情况下再次变得不可变?
首先,让我澄清这个问题并不能清楚地解释我的怀疑.设置上下文清晰.我在C/C++中专门针对函数指针问这个问题.
我知道早期绑定和后期绑定之间的区别以及它是如何工作的.我想要了解的是以下一个使用C/C++中的函数指针的示例:
在许多教科书中,已经提到:
后期绑定的优点是它比早期绑定更灵活,因为关于调用哪个函数的决定不需要在运行时进行.
另外,它提到:
使用后期绑定,程序必须读取指针中保存的地址,然后跳转到该地址.这涉及一个额外的步骤,使其稍慢.
#include <iostream>
using namespace std;
int Add(int nX, int nY)
{
return nX + nY;
}
int Subtract(int nX, int nY)
{
return nX - nY;
}
int Multiply(int nX, int nY)
{
return nX * nY;
}
int main()
{
int nX;
cout << "Enter a number: ";
cin >> nX;
int nY;
cout << "Enter another number: ";
cin >> nY;
int nOperation;
do
{
cout << "Enter an operation …Run Code Online (Sandbox Code Playgroud)