结构体状态复位函数/使用完后将结构体恢复成初始值的怎么写呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体状态复位函数/使用完后将结构体恢复成初始值的怎么写呢?相关的知识,希望对你有一定的参考价值。

参考技术A 方法是有的,不过并不太赞成这种做法,不过如果仅仅是作为初始化使用的话,可以先定义一个初始化的函数,并保证在别的地方不再调用这个函数,倒也可以行,代码如下:
#include <stdio.h>
#include <malloc.h>

typedef struct

int* const p;

C;

int main()

int i = 0;
C* c = (C*)malloc(sizeof(C));
printf("Old: 0x%08X\n", c->p);
(int*)(c->p) = &i; // 最关键的一步。
printf("new: 0x%08X\n", c->p);
free(c);
return 0;


----------------------------------- 补充1
C中是没有构造函数的概念的,所以妄图想C++那样在对象构造的同时对对象进行初始化是误解的,唯一的方法就是写一个特殊的函数,用这个函数来初始化一个结构体的内存,甚至可以用memset()函数都可以,所以你的要求已经退化成如何对结构体进行初始化了,这是很多C++程序员回头写C程序的时候,都会反复思考的问题。

函数可以返回结构体的原因

 C 语言中函数返回结构体时如果结构体较大, 则在调用函数中产生该结构的临时变量,并将该变量首地址传递给被调用函数,被调用函数返回时根据该地址修改此临时变量的内容,之后在调用函数中再将该变量复制给用户定义的变量,这也正是 C 语言中所谓值传递的工作方式。
    如果结构体较小, 则函数返回时所用的临时变量可保存在寄存器中,返回后将寄存器的值复制给用户定义的变量即可。

 

http://blog.csdn.net/guoqianqian5812/article/details/46708177

以上是关于结构体状态复位函数/使用完后将结构体恢复成初始值的怎么写呢?的主要内容,如果未能解决你的问题,请参考以下文章

怎么用 C/C++ 把结构体数组转成 JSON串

C++/CLI下使用结构体数组的问题

C语言结构体指针定义问题 - C / C++ -

函数可以返回结构体的原因

如果我要在一个文件中调用另外一个文件数组结构体的值,并且这个数组结构体还有一个数组结构体,这怎么办

关于C语言中函数修改结构体的值的问题