相关疑难解决方法(0)

使用一个默认值初始化普通数组

C++注意事项:数组初始化有一个很好的列表初始化列表.我有一个

int array[100] = {-1};
Run Code Online (Sandbox Code Playgroud)

期望它充满-1,但它不是,只有第一个值,其余的是0与随机值混合.

代码

int array[100] = {0};
Run Code Online (Sandbox Code Playgroud)

工作正常,并将每个元素设置为0.

我在这里想念的是什么..如果值不为零,不能初始化它吗?

2:默认初始化(如上所述)是否比通过整个数组的通常循环更快并分配一个值还是做同样的事情?

c c++ arrays initialization default-value

230
推荐指数
9
解决办法
40万
查看次数

如何在C中将数组初始化为0?

我需要在C中使用一个大的空数组作为全局数组.除了输入外,还有什么方法可以做到这一点

char ZEROARRAY[1024] = {0, 0, 0, /* ... 1021 more times... */ };
Run Code Online (Sandbox Code Playgroud)

c arrays initialization

150
推荐指数
2
解决办法
25万
查看次数

使用一个值初始化整个2D数组

有以下声明

int array[ROW][COLUMN]={0};
Run Code Online (Sandbox Code Playgroud)

我得到所有零的数组,但使用下面的一个

int array[ROW][COLUMN]={1};
Run Code Online (Sandbox Code Playgroud)

我没有得到所有值的数组.默认值仍为0.

为什么会出现这种情况?如何使用所有1进行初始化?

编辑:我刚刚理解使用memset值为1,将每个字节设置为1,因此每个数组单元格的实际值不会是1但是16843009.如何将其设置为1?

c arrays initialization

65
推荐指数
6
解决办法
20万
查看次数

在C中声明和初始化数组

有没有办法先声明然后在C中初始化一个数组?

到目前为止,我一直在初始化一个这样的数组:

int myArray[SIZE] = {1,2,3,4....};
Run Code Online (Sandbox Code Playgroud)

但我需要做这样的事情

int myArray[SIZE];

myArray = {1,2,3,4....};
Run Code Online (Sandbox Code Playgroud)

c arrays initialization

52
推荐指数
2
解决办法
17万
查看次数

这是编译器优化错误还是未定义的行为?

我们有一个烦人的错误,我无法解释这段代码:

unsigned char bitmap[K_BITMAP_SIZE] = {0} ;
SetBit(bitmap, K_18); // Sets the bit #18 to 1

for(size_t i = 0; i < K_END; ++i)
{
    if(TestBit(bitmap, i)) // true for 18
    {
        size_t i2 = getData(i); // for 18, will return 15
        SetBit(bitmap, i2); // BUG: IS SUPPOSED TO set the bit #15 to 1
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 它发生在Visual C++ 2010上
  2. 它发生在32位和64位版本上
  3. 它仅在发布版本上发生(设置为"最大化速度(/ O2)")
  4. 它不会仅在"最小化大小(/ O1)"设置的发布版本中发生
  5. 只有当我们__forceinline使用getData函数时才会在Visual C++ 2008上发生(默认情况下,VC++ 2008不会内联该函数,而VC++ 2010会这样做)
  6. 它发生在下面给出的代码片段上,可能是因为循环内部有大量内联
  7. 如果我们删除循环并直接设置有趣的值就不会发生(18)

奖金信息:

1- BenJ评论说这个问题没有出现在Visual C++ 2012上,这意味着这可能是编译器中的一个错误

2-如果我们 …

c++ visual-studio-2010 compiler-optimization undefined-behavior visual-studio

48
推荐指数
2
解决办法
2939
查看次数

为什么"memset(arr,-1,sizeof(arr)/ sizeof(int))"不能将整数数组清除为-1?

是不是可以在整数数组上使用memset?我尝试了以下memset调用,并没有在int数组中获得正确的整数值.

int arr[5];
memset (arr, -1, sizeof(arr)/sizeof(int));
Run Code Online (Sandbox Code Playgroud)

我得到的Vaules是:

arr[0] = -1
arr[1] = 255
arr[2] = 0
arr[3] = 0
arr[4] = 0
Run Code Online (Sandbox Code Playgroud)

c

43
推荐指数
4
解决办法
6万
查看次数

在objective-c中初始化NSString的数组

在objective-c中初始化NSStrings数组最简单/最快捷的方法是什么?

objective-c

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

在C代码中将数组归零

可能的重复:
如何在没有循环的情况下将数组初始化为C语言?
如何在C中初始化数组

如何在不使用for或任何其他循环的情况下将已知大小的数组归零?

例如:

arr[20] = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
Run Code Online (Sandbox Code Playgroud)

这是漫长的道路......我需要它的简短方法.

c arrays

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

空的初始化列表是否为有效的C代码?

通常用于{0}初始化a struct或a,array但考虑第一个字段不是标量类型时的情况.如果第一个字段struct Person是另一个struct或数组,则该行将导致错误(error: missing braces around initializer).

struct Person person = {0};
Run Code Online (Sandbox Code Playgroud)

至少GCC允许我使用空的初始化列表来完成同样的事情

struct Person person = {};
Run Code Online (Sandbox Code Playgroud)

但这是有效的C代码吗?

另外:这条线是否保证给出相同的行为,即零初始化struct

struct Person person;
Run Code Online (Sandbox Code Playgroud)

c standards gcc struct initializer

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

C++中如何将结构体初始化为0

这是一个相关的 C 答案,在 C++ 中不起作用(作为结构的零初始化器):Initializing a struct to 0。提出的解决方案之一是:

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

这在 C 中工作正常,但在 C++ 中不起作用。:( :

错误:无法使用“int”类型的右值初始化“myScope::MyStruct”类型的成员子对象。

如何在 C++ 中对结构体进行零初始化?

有关的:

  1. 在 C 中将结构体初始化为 0:将结构体初始化为 0
  2. 更新:(一个相邻但不重复的问题,结果也非常有用)用空花括号初始化

也可以看看:

  1. [相邻相关,但适用于 C 风格数组,而不是结构]如何将数组的所有成员初始化为相同的值?

致投票结束此问题的人们:

我的问题不是这个其他问题的重复(Initialization with empty curlybraces),因为这个其他问题不是询问在 C++ 中初始化结构体的各种方法以及为什么 C 方法不起作用,而是它们是询问为什么 C++ 关键字会explicit破坏他们的初始化技术之一。两个不同的问题。不重复。

我问的后续问题:

  1. 为什么不初始化 C++ 结构体以将= {0}其所有成员设置为 0?

c++ struct initialization

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