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

📅  最后修改于: 2021-05-26 01:39:10             🧑  作者: Mango

预测以下C程序的输出。

// PROGRAM 1
#include 
#include 
  
int main(void)
{
   static int *p = (int*)malloc(sizeof(p));
   *p = 10;
   printf("%d", *p);
}
// PROGRAM 2
#include 
#include 
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 
int fun(int x)
{
    return (x+5);
}
  
int y = fun(20);
  
int main()
{
    printf("%d ", y);
}
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。