相关疑难解决方法(0)

什么是严格别名规则?

当询问C中常见的未定义行为时,灵魂比我提到的严格别名规则更加开明.
他们在说什么?

c strict-aliasing undefined-behavior type-punning

778
推荐指数
10
解决办法
19万
查看次数

将结构初始化为0

如果我有这样的结构:

typedef struct
{
    unsigned char c1;
    unsigned char c2;
} myStruct;
Run Code Online (Sandbox Code Playgroud)

将此结构初始化为0的最简单方法是什么?以下是否足够?

myStruct _m1 = {0};
Run Code Online (Sandbox Code Playgroud)

或者我需要将每个成员显式初始化为0吗?

myStruct _m2 = {0,0};
Run Code Online (Sandbox Code Playgroud)

c struct initialization

104
推荐指数
4
解决办法
14万
查看次数

将结构数组初始化为全0的最快方法?

我正在尝试使用以下语法将结构数组初始化为全0:

STRUCTA array[MAX] = {0};
Run Code Online (Sandbox Code Playgroud)

但是,我从gcc收到以下警告:

警告:初始化程序周围缺少大括号

我做错了什么 - 有另一种/更好的方法吗?

c structure initialization

24
推荐指数
3
解决办法
3万
查看次数

零初始化程序比 memset 更快吗?

我维护遗留的 C 代码,在很多地方他们都有小数组,比如int a[32];后跟一个memset(a, 0, sizeof a);到零初始化它。

我正在考虑将其重构为int a[32] = {0};并删除 memset。

问题是:与调用 memset 相比,使用零初始值设定项是否会产生更快的代码?

c performance memset

5
推荐指数
1
解决办法
456
查看次数

C中的"{0}"是什么?

这是什么char buf[MAXDATASIZE] = { 0 };{0}手段?

试图将其打印出来,但它什么都没打印出来.

#include <stdio.h>

int main(void)
{
        char buf[100] = { 0 };
        printf("%s",buf);
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

c

3
推荐指数
1
解决办法
1368
查看次数