【问题标题】:Array pointer outside of main function主函数外的数组指针
【发布时间】:2017-04-03 05:48:02
【问题描述】:

这是我的另一个完全初学者的菜鸟问题:放置线条时

double w[1];
double *l;
l = w;

进入main()函数,编译时一切正常,但是,当把它放在main()之前(作为声明的变量),然后错误

在“=”令牌之前应为“,”或“;

出现在最后一行。

另外,将前两个放在main() 之前并且只有l = w; 放入main() 可以正常工作。为什么呢?它与编译/运行时有关吗?之前声明它们时,我不能在main() 之外分配值吗?如果有,为什么?

【问题讨论】:

  • 正如您已经指出的那样,您不能在函数之外使用表达式。至于为什么...想想什么时候应该评估这些表达式 - 并假设多个编译单元可以引用相同的变量。
  • @rAndom69 你可以写int dummy = ((l = w), 0);
  • 我不明白你的意思......可以在函数之外定义全局变量。此外,有效的方法类似于“int r = 4; int t = r;”但是,不起作用的是“int r = 4; int t; t = r;”所以问题是:这两件事有什么区别?

标签: c++ arrays pointers compilation declaration


【解决方案1】:

您不能在 C++ 中的函数之外拥有独立的表达式。

您可以通过将表达式移动到 l 的初始化程序来解决此问题:

double w[1];
double *l = w;

【讨论】:

    【解决方案2】:

    对于它的工作原理,可以在函数外部进行声明 - 但是,这样做,您将其声明为全局变量。

    C++ 可以在声明变量后对其进行初始化,但是除此之外它不会运行其他任何东西。所以在这种情况下,表达式

    l = w;
    

    不会运行,因为它不在方法内。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      相关资源
      最近更新 更多