200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > C语言结构体赋值和有指针成员的结构体赋值

C语言结构体赋值和有指针成员的结构体赋值

时间:2020-12-12 05:38:46

相关推荐

C语言结构体赋值和有指针成员的结构体赋值

1结构体赋值

#include <windows.h>struct MyStruct{int a;int b;char c[20];};int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTRlpCmdLine,int nCmdShow){char szBuffer[100];struct MyStruct t1 = {101, 202, "hello struct"};struct MyStruct t2 = t1;wsprintf(szBuffer, "MyStruct t1: %d, %d, %s",t1.a, t1.b, t1.c);MessageBox(NULL,szBuffer,TEXT("结构体赋值"),0);wsprintf(szBuffer, "MyStruct t2: %d, %d, %s",t2.a, t2.b, t2.c);MessageBox(NULL,szBuffer,TEXT("结构体赋值"),0);return 0;}

结构体成员直接赋值;也可以把一个结构体变量赋值给另一个同类型的结构体变量,t2 = t1;

2有指针成员的结构体赋值

#include <windows.h>struct MyStruct{int a;int b;char* c;};int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTRlpCmdLine,int nCmdShow){char szBuffer[100];struct MyStruct t1;t1.a = 101;t1.b = 202;// 为指针区域赋值char *p = (char*)malloc(10*sizeof(char));strcpy(p, "hellostru");t1.c = p;struct MyStruct t2;t2 = t1;wsprintf(szBuffer, "MyStruct t1: %d, %d, %s",t1.a, t1.b, t1.c);MessageBox(NULL,szBuffer,TEXT("结构体赋值"),0);wsprintf(szBuffer, "MyStruct t2: %d, %d, %s",t2.a, t2.b, t2.c);MessageBox(NULL,szBuffer,TEXT("结构体赋值"),0);wsprintf(szBuffer, "t1 pointer addr: %x",t1.c);MessageBox(NULL,szBuffer,TEXT("结构体赋值"),0);wsprintf(szBuffer, "t2 pointer addr: %x",t2.c);MessageBox(NULL,szBuffer,TEXT("结构体赋值"),0);return 0;}

运行如下;后两个消息框输出的是指针地址;

有指针成员的结构体;t2=t1,会直接将t1的指针变量赋值给t2.c,代码不会出错;

如果我们在赋值之后将t1所用的资源释放掉,那么使用t2的话则可能导致内存泄漏了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。