VS2010 编写c语言变量为啥要初始化?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS2010 编写c语言变量为啥要初始化?相关的知识,希望对你有一定的参考价值。

参考技术A 1、C语言变量可以不初始化。直接定义int
a;
printf("%d",&a);这两句程序是直接定义并且输出变量的值,这个要看编译器了,有的编译会输出0,这是编译器初始化了,默认初始化为0。如果有的编译器不初始化的话会报错,即使不报错,那么printf输出的数字是随机的,是这个内存中之前存储的数据。
2、变量是程序中数据的临时存放场所。在代码中可以只使用一个变量,也可以使用多个变量,变量中可以存放单词、数值、日期以及属性。由于变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用。变量可以保存程序运行时用户输入的数据(如使用InputBox函数在屏幕上显示一个对话框,然后把用户键入的文本保存到变量中)、特定运算的结果以及要在窗体上显示的一段数据等。简而言之,变量是用于跟踪几乎所有类型信息的简单工具。

c语言结构体初始化

我用的是vs2010,按照谭浩强书里的page--297,页,说是可以有:strcut student b =.name="zhang fang";这种初始化形式啊,这里为什么会出错呢?

这个结构体中包含三个变量,num name[20] c
你的结构体初始化只初始化了 name[20]
其余俩个变量没有初始化,所以会报错
你可以这样初始化 struct wo b(1,"jack",'M');
要注意对结构体中所有变量都要初始化,除非这个变量有缺省值追问

为什么都必须初始化,谭浩强说C99标准允许对某一成员初始化,什么是缺省值?

追答

对某一成员初始化 是这样的对某一成员 比如
你的例子不是struct wo b;
b.name="jack";
b.num=23;
这样是可以对某一成员赋值的
但你的赋值是对整体赋值,你想一想你的定义struct wo b(,"jack",);
另外两个变量怎么办! 除非你定义结构体的时候如下定义
struct wo

int num=0; //这就是缺省值
char name[20]="jack";
char c; //这个就没有缺省值,懂了吧

参考技术A 没有吧,我怎么没见过,结构体赋值:struct wo b=10,"aaaa",'b';或是b.num=10;没见过你写的那样 参考技术B 这是c99的语法,你的编译器可能不支持c99或你没有打开相应的编译选项

以上是关于VS2010 编写c语言变量为啥要初始化?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在vs2010下编写代码的时候代码下面会出现红色波浪线?

为啥用VS2010编写C语言时会出现此项目已过期(会出现1- debug Win32)?

最近在自学C语言,用的VS2019,为啥照抄结果还报错?请指教。。。。

C语言中变量为啥要初始化?

C语言中变量为啥要初始化?

c语言结构体初始化