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中使用一个大的空数组作为全局数组.除了输入外,还有什么方法可以做到这一点
char ZEROARRAY[1024] = {0, 0, 0, /* ... 1021 more times... */ };
Run Code Online (Sandbox Code Playgroud)
?
有以下声明
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中初始化一个数组?
到目前为止,我一直在初始化一个这样的数组:
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) 我们有一个烦人的错误,我无法解释这段代码:
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)
__forceinline使用getData函数时才会在Visual C++ 2008上发生(默认情况下,VC++ 2008不会内联该函数,而VC++ 2010会这样做)奖金信息:
1- BenJ评论说这个问题没有出现在Visual C++ 2012上,这意味着这可能是编译器中的一个错误
2-如果我们 …
c++ visual-studio-2010 compiler-optimization undefined-behavior visual-studio
是不是可以在整数数组上使用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) 在objective-c中初始化NSStrings数组最简单/最快捷的方法是什么?
可能的重复:
如何在没有循环的情况下将数组初始化为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)
这是漫长的道路......我需要它的简短方法.
通常用于{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 答案,在 C++ 中不起作用(作为结构的零初始化器):Initializing a struct to 0。提出的解决方案之一是:
myStruct _m1 = {0};
Run Code Online (Sandbox Code Playgroud)
这在 C 中工作正常,但在 C++ 中不起作用。:( :
错误:无法使用“int”类型的右值初始化“myScope::MyStruct”类型的成员子对象。
如何在 C++ 中对结构体进行零初始化?
我的问题不是这个其他问题的重复(Initialization with empty curlybraces),因为这个其他问题不是询问在 C++ 中初始化结构体的各种方法以及为什么 C 方法不起作用,而是它们是询问为什么 C++ 关键字会explicit破坏他们的初始化技术之一。两个不同的问题。不重复。