#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/

10-11 23:16
查看更多