c语言结构体变量不初始化,关于结构体变量非定义时初始化有关问题

本文讨论了C语言中结构体变量初始化的问题,特别是在非定义时进行初始化的情况。通过示例代码展示,在VS2013下直接对未定义的结构体变量进行初始化不会报错,但在某些情况下可能会导致默认值的使用。文章提到了C++中的结构体赋值与C语言的区别,并提醒开发者避免过度依赖语法糖,以减少调试错误。
摘要由CSDN通过智能技术生成

关于结构体变量非定义时初始化问题

C语言是否规定对结构体变量的初始化只能在定义时进行?

那为何在VS2013下DEBUG如下代码没有报错?

#include 

#include 

int main(void)

{

struct stu {

int num;

char name[20];

} s, ss, sss;

sss = { 1, "Leonard" }; //非定义时初始化

s.num = 1; strcpy_s(s.name, "Tyler");

ss.num = 1; strcpy_s(ss.name, "Jason");

printf("s.num = %d, s.name = %s\n", s.num, s.name);

printf("ss.num = %d, ss.name = %s\n", ss.num, ss.name);

printf("sss.num = %d, sss.name = %s\n", sss.num, sss.name);

getchar();

return 0;

}

难道是因为C++和C不同吗?

------解决思路----------------------

在C++中不是叫初始化,而是结构体整体赋值吧。

------解决思路----------------------

sss = { 1, "Leonard" };会报错~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值