Tag: 结构

C中二维数组的结构 – 如何声明和使用

我一直试图用一个非常简单的想法在C中工作,但我甚至无法理解语法。 该程序将从命令行获取一些输入,并使用它们来决定制作二维结构数组的大小。 然后,在for循环类型的情况下,我希望能够根据用户输入更改特定的unsigned char。 所以首先我构建一个2D结构数组,每个结构包含一个无符号字符数组以及一个名称,然后我就可以写入这些结构。 命令行参数是三个字符串。 First one is number of rows, second one is number of columns, third one is size of unsigned char array within each struct. #include #include #include #include #include typedef struct { unsigned char* Data; char* name; } myStruct; myStruct* myArr[][]; int main(int argc, char *argv[]) { int y = […]

C – 限制结构范围

我在.c文件中有这个结构: struct entry { int position; int length; struct entry *node; }; 现在,我如何将此结构布局的范围限制为主机文件,以便在另一个文件中为新结构布局使用相同名称时,我不会收到“重新定义”错误? 我尝试在struct之前使用static ,但似乎没用(我也没有意义)。 顺便说一句, 这个问题对我来说似乎没有用,因为我在链接文件中复制stuct条目时会遇到“重新定义”错误(使用MinGW)。 —编辑— 对于那些想要了解更多的人: 这里和这里 。

结构接口

定义新struct ,最好还定义该类型的接口 (即“setter”和“getter”function)或直接通过访问成员. 和->运营商? 编辑 普通C编程

为什么赞成数据结构对齐?

结构的每个成员的类型通常具有默认对齐,即每个结构成员在预定边界上对齐。 因此,填充是在以下wiki示例中执行的: struct MixedData { char Data1; short Data2; int Data3; char Data4; }; struct MixedData /* After compilation in 32-bit x86 machine */ { char Data1; /* 1 byte */ /* 1 byte for the following ‘short’ to be aligned on a 2 byte boundary assuming that the address where structure begins is an […]

C:结构或数组的速度更快?

我想实现(抽象地表示)二维4×4矩阵。 我为矩阵乘法等编写的所有代码都将完全“展开” – 也就是说,我不会使用循环来访问和写入矩阵中的数据条目。 我的问题是:在C中,使用结构本身会更快: typedef struct { double e0, e1, e2, e3, e4, …, e15 } My4x4Matrix; 或者这会更快: typedef double My4x4Matrix[16]; 鉴于我将单独访问每个矩阵元素: My4x4Matrix a,b,c; // (Some initialization of a and b.) … c.e0=a.e0+b.e0; c.e1=a.e1+b.e1; … 要么 My4x4Matrix a,b,c; // (Some initialization of a and b.) … c[0]=a[0]+b[0]; c[1]=a[1]+b[1]; … 或者它们的速度完全相同?

从结构,套接字编程发送数据

我有一个学校的任务,一部分是使用套接字编程从客户端向服务器发送一组int,chars char *。 发送整数或字符的工作正常,但有没有办法将整个结构作为一个数据包发送? 阅读有关序列化的内容,但我似乎无法使其正常工作。 这是一段代码: The struct looks like this: struct Msg { int a; char b; char *user; }; Client: init variables and such… int netcom(char* ip, int port) { sd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); // clear the structure bzero(&serveraddr, sizeof(struct sockaddr_in)); serveraddr.sin_family = AF_INET; // add the server adress inet_pton(AF_INET, ip, &serveraddr.sin_addr); […]

如何根据字符串的值访问`struct’的成员?

我想通过使用字符串的值来访问结构中的成员: struct hello_world { char rate; char ssid; }; 有一个varibale让我们说 char *string=”ssid”; 我想使用此字符串的值来引用hello_world结构中的ssid成员。 这可能吗?

图C实现 – 深度优先搜索

我正在尝试使用图的邻接列表表示来实现深度优先搜索算法。 这是我的代码: #include #include struct edge { int vertexIndex; struct edge *edgePtr; }edge; struct vertex { int vertexKey; int visited; struct edge *edgePtr; }vertex; void insertVertex(struct vertex *g, int vertexKey, int *vertexCount) { g[*vertexCount].vertexKey=vertexKey; g[*vertexCount].edgePtr=NULL; g[*vertexCount].visited=0; (*vertexCount)++; } void insertEdge(struct vertex *g,int vertex1, int vertex2) { struct edge *e,*e1,*e2; e=g[vertex1].edgePtr; while(e&& e->edgePtr) { e=e->edgePtr; } […]

Struct对类型大小的贡献

我想知道为什么以下两种类型 struct { double re[2]; }; 和 double re[2]; 在C中具有相同的大小? struct不会增加一点大小开销吗?

C样式结构声明

我有一个关于C风格结构的快速问题。 我正在挖掘一些示例代码,并发现以下列方式声明的结构: typedef struct _STRUCTNAME { // struct contents } STRUCTNAME; 请注意STRUCTNAME第二次显示缺少下划线。 我的理解是,这将声明一个名为STRUCTNAME的_STRUCTNAME,并且不能再实例化此结构的对象。 但是,情况似乎并非如此。 除了在一个地方之外,这种类型的结构从未在代码中实际实例化:在随机位置使用的此类对象的全局数组中: const struct STRUCTNAME ARRAYNAME[] = { // various STRUCTNAMEs declared here }; 注意再次缺少下划线(我认为是实例化对象的名称?) 我的理解完全没了? 有人能解释一下吗