C变量未初始化的影响

测试代码

#include <stdio.h>

	//全局整形变量 
	int int1;//外部链接
	static int stint1;//内部链接
	int  array1[1];//数组
	//全局指针变量
	char* p1;

int main()
{
	//局部整形变量 
	int int2;
	static int stint2;
	int  array2[1];
	//局部指针变量
	char* p2;//局部指针变量不初始化打印不出来 
	printf("int1=%d,stint1=%d,array1=%d,p1=%s\n", int1, stint1,array1[0],p1);//全局变量 

	printf("int2=%d,stint2=%d,array2=%d,p2=%s\n", int2, stint2,array2[0],p2);//局部变量 
	return 0;
}

测试环境1.Visual Studio2022

 

 

  •  全局未初始化变量设置默认值(int类型默认0,指针默认null)
  • 局部变量定义不使用会警告,定义且使用将报错

测试环境2.GCC

  • GCC环境下,全局未初始化变量设置默认值(int类型默认值0;字符指针默认null)
  • 局部未初始化变量有时设置随机值或者默认值

测试环境3.DEV-C++

  •  Dev-C++环境下,全局未初始化变量均设置为默认值(int类型默认值0;字符指针默认null)
  •  局部未初始化变量,整形设置默认值0;指针未初始化变量不打印不报错



总结:

        1. 局部变量未初始化,初值为随机值:C规范对该初值并没有做规定,具体实现由编译器决定。

        2.全局变量未初始化,默认设置为初值(0/NULL)。

        3.局部未初始化变量,编译通过与否与具体编译环境相关。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vⅤ_Leon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值