Tag: 结构

结构指针数组

我想知道我的代码是否正确。 我需要声明一个指向结构的指针数组,创建一个新的结构并分配值并打印它们。 在我看来,我没有正确地声明指针数组。 我需要知道我做错了什么。 谢谢我收到这个编译错误:错误:’people’未声明(首次在此函数中使用)我试图插入struct data * list; 进入主要但它不会工作 char *book[] = { “x”, “y”, “z”,}; int number[] = { 1, 2, 3}; struct data = { char *bookname; int booknumber;}; function(char *x, int y) { static int count; struct data *list[3]; //creating a new struct list[count] = (struct data*) malloc( sizeof(struct data) ); //assigning […]

结构与未知大小的结构数组

我一整天都试图绕过这个…… 基本上,我有一个名为State的结构,它有一个名称,另一个名为StateMachine,带有名称,状态数组和添加的状态总数: #include #include typedef struct State { const char * name; } State; typedef struct StateMachine { const char * name; int total_states; State ** states; } StateMachine; StateMachine * create_state_machine(const char* name) { StateMachine * temp; temp = malloc(sizeof(struct StateMachine)); if (temp == NULL) { exit(127); } temp->name = name; temp->total_states = 0; […]

为什么填充必须是2的幂?

我正在做一些示例程序来探索C,并想知道为什么结构填充只能以2的幂来完成。 #include #pragma pack(push, 3) union aaaa { struct bbb { int a; double b; char c; }xx; float f; }; #pragma pack(pop) int main() { printf(“\n Size: %d”, sizeof(union aaaa)); return 0; } 在编译时 warning: alignment must be a small power of two, not 3 [-Wpragmas] warning: #pragma pack (pop) encountered without matching #pragma […]

结构的指针算法

给定一个包含一个double和三个int变量的结构定义(总共4个变量),如果p是指向此结构的指针,其值为0x1000,那么p ++有什么值? 这不是作业问题,所以不要担心。 我只是想为测试做准备,我无法弄清楚这个练习题。 谢谢 这是在C.是的,我希望p增加后的值。 这是一台32位机器

使用C中另一个结构内的二维结构数组编码问题

我正在使用二维结构数组,这是另一个结构的一部分。 这不是我已经做了很多事情所以我遇到了问题。 在接近结束的“测试”for-loop之后,此函数最终失败。 它在出现故障之前正确打印出一行。 我的代码中将数据读入虚拟2-d结构数组的部分工作得很好,因此它必须是我的赋值数组才能成为另一个结构(imageStruct)的一部分。 任何帮助将不胜感激! /*the structure of each pixel*/ typedef struct { int R,G,B; }pixelStruct; /*data for each image*/ typedef struct { int height; int width; pixelStruct *arr; /*pointer to 2-d array of pixels*/ } imageStruct; imageStruct ReadImage(char * filename) { FILE *image=fopen(filename,”r”); imageStruct thisImage; /*get header data from image*/ /*make a 2-d […]

在C中复制结构数组

我已经很久没有使用C语言了,这让我发疯了。 我有一个结构数组,我需要创建一个将一个数组复制到另一个数组的函数(我需要一个精确的副本),但我不知道如何定义函数调用。 我想我需要使用指针,但是当我尝试它时会给我一个错误。 struct group{ int weight; int x_pos; int y_pos; int width; int height; }; struct group a[4]; struct group b[4]; copySolution(&a, &b); 最后一个声明给我发错了。 正如我所说,用C编程已经很久了,所以我现在有点迷失了:(

将指针/引用传递给函数

这听起来像是一个愚蠢的问题,但我还在学习C,所以请耐心等待。 🙂 我正在研究K&R(结构)的第6章,到目前为止,这本书已经取得了巨大的成功。 我决定使用结构非常重要,因此在本章的早期就使用了point和rect示例做了很多工作。 我想尝试的一件事是通过指针改变canonrect函数(第2版,第131页),因此返回void 。 我有这个工作,但遇到了打嗝,我希望你们可以帮助我。 我希望canonRect创建一个临时矩形对象,执行其更改,然后重新分配它传递给临时矩形的指针,从而简化代码。 但是,如果我这样做,矩形不会改变。 相反,我发现自己手动重新填充我传入的矩形字段,这确实有效。 代码如下: #include #define min(a, b) ((a) (b) ? (a) : (b)) struct point { int x; int y; }; struct rect { struct point lowerLeft; struct point upperRight; }; // canonicalize coordinates of rectangle void canonRect(struct rect *r); int main(void) { struct point p1, p2; […]

嵌套结构和指针

几乎每次我跳回C项目时,我都会这么说。 在尝试访问结构中的结构时,我遇到了段错误。 假设我有一个游戏的以下(简化)结构: struct vector { float x; float y; }; struct ship { struct vector *position; }; struct game { struct ship *ship; } game; 以及初始化船舶的function: static void create_ship(struct ship *ship) { ship = malloc(sizeof(struct ship)); ship->position = malloc(sizeof(struct vector)); ship->position->x = 10.0; } 然后在main()中: int main() { create_ship(game.ship); printf(“%f\n”, game.ship->position->x); // <– SEGFAULT […]

如何使结构extern并定义其typedef

我正在尝试在C中实现树算法。我在头文件中声明了一个完全独立的外部结构(b_tree_ds.h)。 现在我打算在所有想要使用这个结构的源文件中导入该文件。 所以我必须在标题中使用extern声明它。 现在问题是我想要定义它的typedef。 编译器给出了多个存储类的错误。 我该怎么做 typedef extern struct node { struct node* left; struct node* right; int key; // contains value }NODE; 实际问题如下,我仍然无法解决??? 我最近学会了如何使用带有头文件的多个源文件来使代码可移植和分层。 为了做到这一点,我厌倦了使用这个主体创建我的树程序。 这是我的文件 b_tree_ds.h – 这将包含树节点的数据结构声明 ,可以调用实现树的不同function的各种函数(可以在不同的源文件中) typedef struct node { struct node* left; struct node* right; int key; // contains value }NODE; 当我尝试在typedef extern struct node添加extern时,它会给出多个存储类的错误,但是如果我错过它,我会得到多个定义的错误。 这是我的其他源文件 traverse.h – 包含遍历函数的声明 […]

带有指针初始化的C struct

当实例化包含结构指针数组的结构时,我保证结构数组成员中的所有指针都将设置为NULL吗? 这是一个示例结构: typedef struct mmNode { int val; int board[2][NUM_PITS+1]; int side; struct mmNode* children[NUM_PITS+1]; } mmNode; IE:如果我创建mmNode结构的实例,mmNode.children的元素mmNode.children总是设置为NULL ?