Tag: 初始化

使用宏将项目附加到具有宏的数组中

我有一个数组( C语言)应该在编译时初始化。 例如: DECLARE_CMD(f1, arg); DECLARE_CMD(f2, arg); 从多个文件中调用DECLARE_CMD。 我想要对它进行预处理。 my_func_type my_funcs [] = { &f1, &f2 } 使用宏可以将项附加到静态数组? 我在gcc4上使用C99(带GNU扩展)。

在C ++代码中初始化C结构

有没有更好的方法来初始化C ++代码中的C结构? 我可以在变量声明点使用初始化列表; 但是,如果在编译时不知道所有参数,或者如果我没有声明本地/全局实例,那么这没有用,例如: 遗留C代码,它声明了结构,并且还使用了API typedef struct { int x, y, z; } MyStruct; 使用C库的C ++代码 void doSomething(std::vector &items) { items.push_back(MyStruct(5,rand()%100,items.size()));//doesn’t work because there is no such constructor items.push_back({5,rand()%100,items.size()});//not allowed either //works, but much more to write… MyStruct v; vx = 5; vy = rand()%100; vz = items.size(); items.push_back(v); } 创建本地实例,然后一次设置一个成员( myStruct.x = 5;等)是一个真正的痛苦,当尝试将20个不同的项添加到容器时有点难以阅读…

在C或C ++中是否有未初始化指针的用途?

在这个问题的一个评论中,提出默认情况下初始化C ++指针会破坏与C的兼容性。 那没关系,但为什么会这样呢? 我认为唯一真正重要的是因为某些原因我想要一个未初始化的指针。 但我想不出有什么理由让我想拥有它。 是否有未初始化指针的用途? 或者兼容性问题只是兼容行为之一(即不增加开销)而不是破坏代码之一?

嵌套的struct变量初始化

如何在C中初始化此嵌套结构? typedef struct _s0 { int size; double * elems; }StructInner ; typedef struct _s1 { StructInner a, b, c, d, e; long f; char[16] s; }StructOuter; StructOuter myvar = {/* what ? */ };

如何检查结构是否已初始化?

我有一个表,我正在实现数据结构。 我的代码的一个重要块看起来像这样(h是数据结构,表是存储其他结构的表): (h->table[hash(key, h->size)] 当我的代码运行时,一些table [i]将被初始化,而有些则不会。 每当我在尚未初始化的表[i]上测试我的代码时,我得到一个valgrind错误,基本上我说我无法使用未初始化的数组。 我的问题是,我如何检查某个h-> table [i]是否已初始化?

在结构C中初始化变量矩阵

我在C中的结构中初始化变量矩阵时遇到了麻烦。已经阅读了几篇post( post )但我似乎无法修复它。 不要问我为什么,但是对于一项任务,我需要初始化一个位于结构中的矩阵。 我的结构代码是: typedef struct maze{ int row; int column; char matrix[row][column]; }maze; 通过调用不同的函数,在读取某个文件后,我需要通过给定的参数初始化矩阵,因此2个参数为“row”和“column”。 我的init函数代码是: struct maze* init_maze(int row, int column) { struct maze mazeFilled; struct maze *mazePointer; mazeFilled.row = row; mazeFilled.column = column; return mazePointer; } 但是你可以猜测这不起作用,人们已经提到很难用2个变量创建一个矩阵。 任何人都可以解释我做错了什么。 编辑1: 我根据结构更改了我的代码,但结构保持不变。 我需要分配指针,以便它甚至在独家新闻之外保持活跃状态​​。 我的init函数的新代码是: struct maze* init_maze(void) { int row = 6; int column […]

C初始化数组数组

我有这个问题。 在运行某些函数之前,我需要存储一个float数组数组。 我怎么能实现这一点,因为我无法初始化一个非常数的数组? 我应该创建一个将使用malloc创建该数组的函数然后返回并分配给指针? typedef struct { float RGBA[4]; } graphColors; 我需要一个grapColors数组。 我很抱歉缺乏知识,我是一名Java程序员,现在需要与C合作。 编辑: graphColors *initializeGraphColors(){ graphColors *gp; int i; float HI = 1.0f; float LO = 0.0f; float temp[] = {1.0f, 1.0f, 1.0f, 0.0f}; gp = (graphColors *) malloc(nrOfLines * sizeof(graphColors)); for(i = 0;i < nrOfLines; i++){ gp[i].RGBA[0] = LO + (float)rand()/((float)RAND_MAX/(HI-LO)); gp[i].RGBA[1] = […]

C中未初始化数组中char的默认值是多少?

鉴于以下声明: char inputBuffer[12]; 数组中任何一个char的默认值是多少? 我很想知道这一点,因为如果我想在arrays中清除一个位置,我需要知道给它的价值。

初始化与赋值不同?

1.char str[] = “hello”; //legal 2.char str1[]; str1 = “hello”; // illegal 我知道“hello”从字符串文字池中返回字符串文字的地址,该地址不能直接分配给数组变量。 在第一种情况下,将“hello”文字中的字符逐个复制到数组中,并在末尾添加“\ 0”。 这是因为赋值运算符“=”在这里被重载以支持这个吗? 我还想知道其他有趣的情况,其中初始化与赋值不同。

Delphi XE3:使用多个C头文件和源文件

所以,我有一组相互依赖的.c和.h文件,而我正在试图弄清楚C / C ++到Pascal的工作方式(我的delphi / pascal工作非常基本)。 c文件是数学算法的步骤1-N(按顺序)(每个是一个单独的函数),一个头指定每个函数中使用的变量(我使用record在delphi中重新创建.h文件),另一个标题详细说明了自定义变量类型。 目标是访问函数而无需将C代码重写为Pascal / Delphi语法,从delphi代码链接到某些现有c。 有太多冗长的文件(12 .c和4 .h)供我剪断,我的C非常生锈,但我会尝试。 例如,我有一个文件funcs.h : #ifndef _FUNCS_H #ifndef _FUNCS_H #ifdef __cplusplus extern “C” { #endif #include “New_Type.h” // custom variable used in funcs.h #include “Optional.h” // optional set of more functions typedef struct { int a1[4]; double b1[10]; // Computed if optional functions are requested […]