Tag: 结构

C结构有任何尺寸限制吗?

C结构有任何尺寸限制吗?

C中的空结构

我有一个没有成员的结构(目前),我想知道是否有可能抑制我得到的警告: warning: struct has no members 是否可以添加成员并保持结构的sizeof为零? 还有其他方法吗?

初始化结构数组

这是我刚刚在其他人的问题中找到的初始化。 my_data data[]={ { .name = “Peter” }, { .name = “James” }, { .name = “John” }, { .name = “Mike” } }; 我之前从未见过这样的东西,也找不到解释.name可能是正确的。 我正在寻找的是这个过程如何逐步进行。 它看起来像是: 1) data; 2) *data; 3) (*data).name; 4) (*data).name=”Peter”; 还是我完全错了?

如何在C中使用作为struct成员的指针?

我不是C编程的新手。 但是我不明白将指针作为C中的结构成员保持指示是有用的。例如 // Fist Way: To keep pointer to function in struct struct newtype{ int a; char c; int (*f)(struct newtype*); } var; int fun(struct newtype* v){ return v->a; } // Second way: Simple struct newtype2{ int a; char c; } var2; int fun2(struct newtype2* v){ return v->a; } int main(){ // Fist: Require two […]

C如何返回结构?

(gdb) disas func Dump of assembler code for function func: 0x00000000004004b8 : push %rbp 0x00000000004004b9 : mov %rsp,%rbp 0x00000000004004bc : movl $0x64,0xfffffffffffffff0(%rbp) 0x00000000004004c3 : movb $0x61,0xfffffffffffffff4(%rbp) 0x00000000004004c7 : mov 0xfffffffffffffff0(%rbp),%rax 0x00000000004004cb : leaveq 0x00000000004004cc : retq End of assembler dump. t_test func() { t_test t; ti = 100; tc = ‘a’; return t; } 所以它似乎正在返回局部变量t […]

如何通过偏移获取/设置结构成员

忽略填充/对齐问题并给出以下结构,在不使用成员名称的情况下获取和设置member_b的值的最佳方法是什么。 struct mystruct { int member_a; int member_b; } struct mystruct *s = malloc(sizeof(struct mystruct)); 换一种方式; 你如何用指针/偏移来表达以下内容: s->member_b = 3; printf(“%i”,s->member_b); 我的猜测是 通过查找member_a( int )的size来计算偏移量 将结构转换为单个单词指针类型( char ?) 创建一个int指针并设置地址(到*charpointer + offset ?) 使用我的int指针来设置内存内容 但是我对于转换为char类型有点困惑,或者如果像memset这样的东西更合适,或者通常我正在处理这个完全错误。 欢呼任何帮助

指向结构的指针

我是指针的新手,并试图使用指向结构的指针。 但在第一次进入后,我的程序崩溃了。 请帮助我。 这是结构定义: struct students{//structure students definition char name[20]; char RegNo[15]; char CourseUnit[10]; int score; char grade; }; 等级不应由用户输入,而是由程序计算。 到目前为止,这是我写的代码: int main()//start of main { struct students *myStudPtr,myStud[SIZE]; myStudPtr=&myStud[SIZE]; int i;//declare variables int count; printf(“How many students do you want to deal with?\n”); scanf(“%d”,&i);//number of entries for(count=1;countname); printf(“%s\t\t”, myStudPtr->RegNo); printf(“%s\t”, myStudPtr->CourseUnit); printf(“%d\t\t”, myStudPtr->score); if(myStudPtr->score>100) […]

如何访问其原始function之外的结构成员?

我正在开发一个项目,我在一个单独的函数内创建结构而不是main() 。 在创建并将成员(变量)信息添加到结构变量中之后,我需要能够return一个指向结构的指针,在该结构中我可以访问它以供参考和打印。 我包括我的代码,请尽可能简单,因为我是结构新手。 #include #include #include typedef struct _car { char color[20]; char model[20]; char brand[20]; int year; struct _car *eptr; } Car; Car* readCars(char* filename); /* * */ int main(int argc, char** argv) { Car *Cars; Car *eptr; Cars = readCars(argv[1]); printf(“%s%s%s%s”, Cars->color, Cars->brand, Cars->model, Cars->color); return (EXIT_SUCCESS); } Car* readCars(char* filename) { […]

memset(&mystruct,0,sizeof mystruct)与mystruct = {0}相同;?

我正在读取默认情况下数组/结构的初始值,并有这个问题: 与mystruct = { 0 };相同的memset(&mystruct, 0, sizeof mystruct) mystruct = { 0 }; ? 如果不是,有什么区别?

undefined C struct forward声明

我有一个头文件port.h,port.c和我的main.c 我收到以下错误:’ports’使用未定义的struct’port_t’ 我以为我已经在我的.h文件中声明了结构,并且.c文件中的实际结构是可以的。 我需要有前向声明,因为我想在port.c文件中隐藏一些数据。 在我的port.h中,我有以下内容: /* port.h */ struct port_t; port.c: /* port.c */ #include “port.h” struct port_t { unsigned int port_id; char name; }; main.c中: /* main.c */ #include #include “port.h” int main(void) { struct port_t ports; return 0; } 非常感谢任何建议,