1. 主页
  2. 文档
  3. C语言教程
  4. C语言变量
  5. C中全局变量和静态变量的初始化

C中全局变量和静态变量的初始化

预测以下 C 程序的输出。

// PROGRAM 1
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
static int *p = (int*)malloc(sizeof(p));
*p = 10;
printf("%d", *p);
}
// PROGRAM 2
#include <stdio.h>
#include <stdlib.h>
int *p = (int*)malloc(sizeof(p));

int main(void)
{
*p = 10;
printf("%d", *p);
}

上述两个程序都不能在 C 中编译。我们在 C 中得到以下编译器错误。

error: initializer element is not constant

在 C 中,静态变量和全局变量由编译器自己初始化。因此,它们必须用一个常数值初始化。

请注意,上述程序在 C++ 中编译和运行良好,输出为 10。

作为练习,预测以下 C 和 C++ 程序的输出。


#include <stdio.h>
int fun(int x)
{
return (x+5);
}

int y = fun(20);

int main()
{
printf("%d ", y);
}

 

这篇文章对您有用吗?