相关疑难解决方法(0)

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

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

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

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

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

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

c structure initialization

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

使用指定的初始值设定项初始化数组时的奇怪值

当我初始化下面的数组时,所有输出看起来都没问题,除了values[3].出于某种原因,values[3]初始化为values[0]+values[5]输出非常大的数字.我的猜测是,我在尝试分配values[0]+values[5]之前将它们妥善存储在内存中,但是如果有人能够解释那将是很好的.

int main (void)
{

    int values[10] = { 
        [0]=197,[2]=-100,[5]=350,
        [3]=values[0] + values[5],
        [9]= values[5]/10
    };

    int index;

    for (index=0; index<10; index++)
        printf("values[%i] = %i\n", index, values[index]);


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出如下:

values[0] = 197
values[1] = 0
values[2] = -100
values[3] = -1217411959
values[4] = 0
values[5] = 350
values[6] = 0
values[7] = 0
values[8] = 0
values[9] = 35
Run Code Online (Sandbox Code Playgroud)

c arrays runtime-error designated-initializer unspecified-behavior

18
推荐指数
4
解决办法
1331
查看次数

将数组设置为一个值

是否有一种更简单的方法C将数组设置为一个值而不是使用for循环并逐个设置每个值?

c

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

c ++数组初始化

可能重复:
如何在C
数组初始化中初始化数组,引用前一个元素ok?

我想知道在c/c ++标准中进行这样的初始化是否安全:

int a = 5;
int tab[] = { a , tab[0] + 1 , tab[1] };
Run Code Online (Sandbox Code Playgroud)

它成功编译并执行gcc 4.5和clang 2.9,但它总是真的吗?


打印此表给出5 6 6.它在全球范围内初始化.


通常它在c和c ++中都很有趣,但我想在c ++中使用它:)

c++ arrays initialization

16
推荐指数
3
解决办法
3268
查看次数

初始化结构中的数组值

我有一个结构,里面有几个数组.数组的类型为unsigned char [4].

我可以通过调用初始化每个元素

struct->array1[0] = (unsigned char) something;
... 
struct->array1[3] = (unsigned char) something;
Run Code Online (Sandbox Code Playgroud)

只是想知道是否有办法在一行中初始化所有4个值.

解决方案:我需要创建一个临时数组,其中所有值都已初始化,然后调用memset()将值复制到struct数组中.

c arrays struct initialization

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

如何将数组的所有元素设置为零或任何相同的值?

我是C的初学者,我真的需要一种有效的方法来设置数组的所有元素等于零或任何相同的值.我的数组太长了,所以我不想用for循环来做.

c linux arrays

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

如何在没有循环的情况下将数组初始化为C语言?

可以说我有一个类似的阵列

int arr[10][10];
Run Code Online (Sandbox Code Playgroud)

现在我想将此数组的所有元素初始化为0.如何在没有循环或指定每个元素的情况下执行此操作?

请注意这个问题是否适用于C.

c

9
推荐指数
4
解决办法
6506
查看次数

使用复合文字初始化数组中的所有元素

float myArray[myArraySize] = {1};
Run Code Online (Sandbox Code Playgroud)

在上面的表达式中,只有第一个元素是init和1.如何使用复合文字(不是memset)初始化所有带元素的元素?

我在unix上使用GCC 4.2进行编译.

c arrays gcc c99 gcc4

8
推荐指数
2
解决办法
614
查看次数

使用缓冲区[100] = {0,}的初始化如何在C语言中工作?

在用C语言编写的程序的加载数据部分中,我看到缓冲区的初始化是这样完成的:

char buffer[100] = {0, };
Run Code Online (Sandbox Code Playgroud)

但是我不确定这个陈述赋予了什么值.请分享一些想法.

这取决于编译器还是语言功能?

如果此语句等​​效于以下,那么在该零之后使用逗号的重点是什么:

char buffer[100] = {0};
Run Code Online (Sandbox Code Playgroud)

是不是因为编码器只想确保第一个元素为零,而不关心其余元素?

c

8
推荐指数
2
解决办法
5853
查看次数

如何在C++对象中初始化数组

在阅读如何在C中初始化数组之后,特别是:

但是,不要忽视明显的解决方案:

int myArray [10] = {5,5,5,5,5,5,5,5,5,5};

我试过这样的事情:

#include <iostream>

class Something {
private:

int myArray[10];

public:

Something() {
    myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
}

int ShowThingy(int what) {
    return myArray[what];
}

~Something() {}
};

int main () {
   Something Thing;
    std::cerr << Thing.ShowThingy(3);
}
Run Code Online (Sandbox Code Playgroud)

我得到:

..\src\Something.cpp: In constructor 'Something::Something()':
..\src\Something.cpp:10:48: error: cannot convert '<brace-enclosed initializer list>' to 'int' in assignment
Run Code Online (Sandbox Code Playgroud)

在这种情况下显而易见的并不那么明显.我真的希望我的阵列的启动也更加动态.

我累了:

private:
    int * myArray;

public:
    Something() …
Run Code Online (Sandbox Code Playgroud)

c++ arrays initialization class

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