#include <iostream>
int a = 9;
int *p;
p = &a;
int fun();
int main()
{
std::cout << fun();
return 0;
}
int fun()
{
return *p;
}
为什么此代码会产生错误:
预期的构造函数,析构函数或
'='标记前的类型转换|
这段代码可以正常运行:
#include <iostream>
int a = 9;
int *p = &a;
int fun();
int main()
{
std::cout << fun();
return 0;
}
int fun()
{
return *p;
}
最佳答案
您可以在全局范围内声明和初始化变量/类型,而不必为其赋值。main()
是C ++程序的开始,并且Assign语句必须位于main内部。
C ++ 03 Standard:$ 3.6.1 / 1节:
程序应包含一个称为main的全局功能,这是程序的指定启动位置。
如果您来自脚本编写背景,则应注意,C ++与脚本编写语言的不同之处在于,您可以在指定的程序开始(main()
)范围之外声明项目,但不能进行任何处理(赋值或其他处理)声明)。
关于c++ - 分配全局指针的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6546669/