相关疑难解决方法(0)

如何将数组的所有成员初始化为相同的值?

我在C中有一个大数组(如果有所不同,则不是C++).我想将所有成员初始化为相同的值.我发誓我曾经知道一个简单的方法来做到这一点.我可以memset()在我的情况下使用,但是没有办法在C语法中构建这样做吗?

c arrays array-initialize initialization

934
推荐指数
13
解决办法
179万
查看次数

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

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

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

c arrays initialization

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

在结构数组的末尾需要空大括号“{}”吗?

我在 Linux 内核中打了一些 代码

static struct ctl_table ip_ct_sysctl_table[] = {
    {
        .procname   = "ip_conntrack_max",
        .maxlen     = sizeof(int),
        .mode       = 0644,
        .proc_handler   = proc_dointvec,
    },
    // ...
    {
        .procname   = "ip_conntrack_log_invalid",
        .maxlen     = sizeof(unsigned int),
        .mode       = 0644,
        .proc_handler   = proc_dointvec_minmax,
        .extra1     = &log_invalid_proto_min,
        .extra2     = &log_invalid_proto_max,
    },
    { }
};
Run Code Online (Sandbox Code Playgroud)

这里的结构数组以{ }. 添加的目的是什么?
顺便说一句,在这段代码上方有另一个structs 数组,但最后没有空大括号。

什么时候应该在结构数组的末尾使用空大括号?

c arrays struct linux-kernel

60
推荐指数
4
解决办法
3810
查看次数

C中的空结构

我有一个没有成员的结构(目前),我想知道是否有可能抑制我得到的警告:

warning: struct has no members
Run Code Online (Sandbox Code Playgroud)

是否可以添加成员并保持sizeof结构为零?还有其他方法吗?

c struct warnings

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

C/C++:int数组[10] = {0}如何工作?

我想知道它是如何int array[10]={0}工作的?

这样整个阵列都会一路走来吗?

for(int i=0;i<10;i++) array[i]=0;
Run Code Online (Sandbox Code Playgroud)

还是更有效率?

c c++ arrays initialization

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

如何删除gcc 4.6中的警告:缺少初始值设定项[-Wmissing-field-initializers]?

代码:

  GValue value = { 0 };
Run Code Online (Sandbox Code Playgroud)

发出以下警告:

缺少初始值设定项[-Wmissing-field-initializers]

我知道那是一个gcc's BUG; 但有一些技巧可以删除它吗?真的不太好看到这种不真实的警告.但我不希望断电警告,因为它也会隐藏我的真实警告.很抱歉,但我无法将我的gcc更新为4.7(看起来它已修复)版本.

c gcc struct warnings glib

4
推荐指数
2
解决办法
1万
查看次数

OpenCL 是否支持数组初始化器,包括默认初始化为 0?

在我的内核中,我需要一组累加器。

__kernel myKernel(...)
{
    float accum[SIZE] = {};

    for(i=0; i<ITER; ++i) {
       accum[...] += ...
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

在 C 中,= {}会为我初始化数组以填充 0,但我不确定 OpenCL 中是否是这种情况?我需要像下面这样的东西,还是浪费周期?

float accum[SIZE];
for(int i=0; i<SIZE; ++i) accum[i] = 0;
Run Code Online (Sandbox Code Playgroud)

opencl

4
推荐指数
1
解决办法
3110
查看次数

我应该使用{}或{0}初始化数组/结构吗?

我有一个微弱的阅读记忆,int x[4] = {};用于将结构/数组初始化为默认值的代码依赖于最初出现在gcc中的非标准(但广泛)扩展,并且正确的版本(如标准中明确指出的)是int x[4] = { 0 };

它是否正确?

c initialization

4
推荐指数
1
解决办法
229
查看次数

c 中 printf 出现意外换行

我正在学习c语言中的字符串,并且正在做我的作业,要求我编写一个程序来在某些情况下替换部分字符串。这是我的源代码(未完成):

#include <stdio.h>
#include <string.h>
int main()
{
    char str1[128], str2[128], str3[128];
    for (int i = 0; i < 128; i++) //initialize str
    {
        str1[i] = 0;
        str2[i] = 0;
        str3[i] = 0;
    }
    printf("Input the first string:"); //inputs
    fgets(str1, 128, stdin);
    printf("Input the second string:");
    fgets(str2, 128, stdin);
    printf("Input the third string:");
    fgets(str3, 128, stdin);
    if (strncmp(str1, str2, strlen(str2) - 1) == 0) //if the first n charters match (n=length of str2)
    {
        printf("%s", str3); //print str3
        int RemainingChar …
Run Code Online (Sandbox Code Playgroud)

c string printf

2
推荐指数
1
解决办法
972
查看次数

C99中的指定初始化程序:如何在C11中处理空的未初始化的结构成员?

因为在CI中可以通过名称调用结构的成员(myStruct.myMember =),我想知道在C++中我将使用那些未初始化的成员做什么.据我所知,C++不支持这种初始化:

static struct usb_endpoint_descriptor  fs_source_desc = {
        .bLength =      USB_DT_ENDPOINT_SIZE,
        .bDescriptorType =  USB_DT_ENDPOINT,
        .bmAttributes =     USB_ENDPOINT_XFER_BULK,
        .wMaxPacketSize =   __constant_cpu_to_le16 (64),
    };
Run Code Online (Sandbox Code Playgroud)

但是当我使用正确的语法时,如何处理未初始化的成员?让我们说我想要bDescriptorType未初始化.我将它设置为NULL吗?

static struct usb_endpoint_descriptor fs_source_desc = {
    USB_DT_ENDPOINT_SIZE,
        NULL,
        USB_ENDPOINT_XFER_BULK,
        __constant_cpu_to_le16 (64)
};
Run Code Online (Sandbox Code Playgroud)

或者,在C++中是否有任何方法可以按名称初始化结构的成员?

c c++ c99

1
推荐指数
2
解决办法
1431
查看次数

这是C++中的聚合初始化还是默认初始化?

考虑以下程序.

#include <iostream>
int main()
{
    int a=int{};
    std::cout<<a;
}
Run Code Online (Sandbox Code Playgroud)

它是使用聚合初始化还是默认初始化?我很迷惑.

c++ initialization aggregate-initialization

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

在 C 中函数执行完成后,函数的本地数组是否仍然保留?

我已在函数内声明并初始化了一个(动态?)数组bool,如下面这个简单示例所示。我正在使用相同的函数来填充它。我不希望在函数执行完成后将数组保留在计算机内存中,以允许在将来的函数调用中使用正确的值重新填充数组。一旦函数调用返回,它会自动从内存中删除吗?如果没有,解决方法是什么?

bool correct_count(int start, int end)
{
    int numbers[] = {};

    for (int i = 0; i < (end - start + 1); i++)
    {
        numbers[i] = start + i;
    }

    if (numbers[0] == start && numbers[end - start] == end)
    {
        return true;
    }

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

在这个简单的示例中,我们可以确定数组的大小,但我尝试编写的程序并非如此。另外,我还不允许在我的程序中使用与内存相关的运算符,例如解引用运算符或动态内存分配,因为这目前超出了我已经学到的范围。

c memory arrays function local-variables

-1
推荐指数
1
解决办法
143
查看次数