预测以下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基础课程》。