小编hac*_*cks的帖子

如何使用某些值初始化数组中的少数元素?

这可能是一个愚蠢的问题,但是可以为数组而不是全部分配一些值吗?澄清我想要的东西:

如果我需要一个像{1,0,0,0,2,0,0,0,3,0,0,0}我可以创建它的数组:

int array[] = {1,0,0,0,2,0,0,0,3,0,0,0};
Run Code Online (Sandbox Code Playgroud)

该数组的大多数值都是'0'.是否可以跳过此值并仅分配值1,2和3?我想到的是:

int array[12] = {0: 1, 4: 2, 8: 3};
Run Code Online (Sandbox Code Playgroud)

c arrays initialization

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

c中的逗号运算符

#include<stdio.h> 
int main(void) {
   int a=(1, 2), 3; 
   printf("%d", a);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:2
任何人都可以解释输出是2吗?

c comma-operator

39
推荐指数
2
解决办法
2816
查看次数

为什么int x [n]错误,其中n是一个const值?

我不明白为什么这样做是错的:

const int n = 5; 
int x[n] = { 1,1,3,4,5 };
Run Code Online (Sandbox Code Playgroud)

即使n已经是const值.

虽然这样做似乎适合GNU编译器:

const int n = 5;
int x[n]; /*without initialization*/
Run Code Online (Sandbox Code Playgroud)

我知道C99的VLA功能,我认为这与正在发生的事情有关,但我只需要澄清背景中发生的事情.

c arrays const c99

38
推荐指数
3
解决办法
2836
查看次数

编译器如何知道函数调用中的逗号不是逗号运算符?

考虑函数调用(调用int sum(int, int))

printf("%d", sum(a,b));
Run Code Online (Sandbox Code Playgroud)

编译器如何确定,函数调用中使用的函数sum(int, int)不是逗号运算符?

注意:我不想在函数调用中实际使用逗号运算符.我只是想知道编译器如何知道它不是逗号运算符.

c compiler-construction function comma-operator

37
推荐指数
5
解决办法
2830
查看次数

DBMS和RDBMS有什么区别?

在不同的网站上阅读了一些答案后,我现在很困惑.因此,提及DBMS和RDBMS之间的关键区别以及它们之间的任何关系会很有帮助.

database rdbms

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

sizeof(空结构)和sizeof(结构与空数组)之间的区别?

我有两个结构定义如下:

struct EmptyStruct{

};

struct StructEmptyArr{
    int arr[0];
};

int main(void){
    printf("sizeof(EmptyStruct) = %ld\n", sizeof(EmptyStruct));
    printf("sizeof(StructEmptyArr) = %ld\n", sizeof(StructEmptyArr));

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

在Ubuntu 14.04,x64上用gcc(g ++)4.8.4编译.

输出(对于gcc和g ++):

sizeof(EmptyStruct) = 1
sizeof(StructEmptyArr) = 0
Run Code Online (Sandbox Code Playgroud)

我能理解为什么sizeof(EmptyStruct)等于1但不能理解为什么sizeof(StructEmptyArr)等于0.为什么两者之间存在差异?

c c++ struct sizeof

35
推荐指数
2
解决办法
2075
查看次数

struct结尾处的大小为0的数组

我今天接受系统编程课程的教授告诉我们,最后定义一个零长度数组的结构:

struct array{
    size_t size;
    int data[0];
};

typedef struct array array;
Run Code Online (Sandbox Code Playgroud)

这是一个有用的结构,用于定义或初始化带有变量的数组,即如下所示:

array *array_new(size_t size){
    array* a = malloc(sizeof(array) + size * sizeof(int));

    if(a){
        a->size = size;
    }

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

也就是说,使用malloc(),我们还为大小为零的数组分配内存.这对我来说是全新的,而且看起来很奇怪,因为从我的理解来看,结构不必在连续的位置上有它们的元素.

为什么代码在array_new内存中分配data[0]?那么,为什么要访问它是合法的

array * a = array_new(3);
a->data[1] = 12;
Run Code Online (Sandbox Code Playgroud)

从他告诉我们的内容来看,似乎在结构的末尾定义为长度为零的数组确保在结构的最后一个元素之后立即出现,但这看起来很奇怪,因为再次,根据我的理解,结构可能有填充.

我也看到这只是gcc的一个特性,并没有任何标准定义.这是真的?

c arrays gcc struct pointers

34
推荐指数
3
解决办法
9438
查看次数

为什么对函数的VLA数组参数使用星号"[*]"而不是整数?

在函数中使用变长数组作为参数时

int sum(int n, int a[n]);
Run Code Online (Sandbox Code Playgroud)

很容易理解第一个参数(n)指定第二个参数(a)的长度.但遇到另一个用于VLA的原型作为参数

int sum(int n, int a[*]);
Run Code Online (Sandbox Code Playgroud)

真的很难理解为什么*用而不是在n里面[]

c arrays function function-parameter

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

C中的空格符号是什么?

我试图找出如何检查一个字符是否等于C中的空格.我知道标签是'\t'和换行符'\n',但我希望能够检查一个常规的正常空间(来自空格键)在一份if声明中.

有谁知道这是什么角色?

c whitespace space

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

未命名的结构可以继承吗?

以下看起来像编译错误:

struct : Base { };
Run Code Online (Sandbox Code Playgroud)

然而,当使用 [1]它似乎工作:

#include <iostream>
using namespace std;

template<bool B>
struct A 
{
    struct : std::integral_constant<bool, B> {
    } members;
};

int main()
{
    A<true> a;    
    cout << a.members.value << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在c ++中它是否适用于未命名的结构继承?有没有这个用户的例子?


[1]免责声明:我不是假装提供的示例很有用.我很少使用未命名的结构,当我这样做时,它们通常将一些内置成员变量捆绑在一起,以便为类提供更清晰的接口.这个问题从观测上来memberspaces不需要nammed结构

c++ inheritance struct

29
推荐指数
2
解决办法
2562
查看次数