c++-关于C++结构体的问题(新手)

问题描述

关于C++结构体的问题(新手)

结构体清零有什么函数可以用么?还有用引用来调用。。如题

解决方案

 #include <stdlib.h>
#include <stdio.h>

typedef struct {
    char name[20];
    int math;
    int eng;
    int db;
} Student;

void SetZero(Student& s)
{
    s.math = 0;
    s.eng = 0;
    s.db = 0;
}

Student* SetZero1(Student s)
{
    Student *p = (Student *)malloc(sizeof(Student));
    memcpy(p, &s, sizeof(Student));
    p->math = 0;
    p->eng = 0;
    p->db = 0;
    return p;
}

int main()
{
    Student s;
    s.math = 100;
    printf("%dn", s.math);
    SetZero(s);
    printf("%dn", s.math);
    s.math = 100;
    printf("%dn", s.math);
    s = *SetZero1(s);
    printf("%dn", s.math);
    return 0;
}

100
0
100
0

解决方案二:

楼上malloc申请的内存没有释放,在使用时请千万注意内存泄漏问题!!!

解决方案三:

你直接memset(&s,0,sizeof(s));或者给student类写个方法
void setZero()
{
s.math = 0;
s.eng = 0;
s.db = 0;
}

时间: 2024-10-29 10:43:51

c++-关于C++结构体的问题(新手)的相关文章

c++-用new申请了一个结构体数组,delete时内存错误

问题描述 用new申请了一个结构体数组,delete时内存错误 strong text //////////////////////////////////////CLOCK算法部分//////////////////void CLOCK(){ arr *page_t; int ijpointertimes=0flag=-1num=0;//pointer为查找位置 page_t=new arr[m];//==============================开始计算============

python c++ 传参-python 调用C++函数,关于结构体传参问题

问题描述 python 调用C++函数,关于结构体传参问题 python 调用C++函数,C++函数的参数类型是pyobject*,其实是一个结构体数组 类似于 #define NUM 32 stuct A { int a; int b; }; struct B { int len; A ab[NUM]; } 请问在python中如何将这个结构体数组表示出来并传给 C++函数. 我在python中用类表示的 class A: def init(self): self.a=0 self.b=0 c

struct-新手求教,结构体在文件之间调用的问题

问题描述 新手求教,结构体在文件之间调用的问题 //main.c #include #include #include"Dfile.h" void main() { int i; biaozhun_in.shui=0; biaozhun_in.dian=0; puts("水电标准:"); scanf("%lf %lf",&biaozhun_in.shui,&biaozhun_in.dian); puts("水电耗:&qu

指针-C++结构体程序问题,下面程序错在哪?

问题描述 C++结构体程序问题,下面程序错在哪? reg_write函数在之前有已经写过了,问题在赋值上面.求教高手,我是新手,谢谢 解决方案 int main()函数要有返回值...可能还有别的问题,你再试试看 解决方案二: reg_write函数在之前有已经写过了,问题在赋值上面.求教高手,我是新手,谢谢 你能不能够把源代码粘过来?

小白求教delphi 结构体指针问题

问题描述 小白求教delphi 结构体指针问题 case PMarketType(FMarketTabSet.Tabs.Objects[0]).iType of 这是什么意思 PMarketType = ^TMarketType; TMarketType = packed record FMarketTabSet := TTabSet.Create PMarketType(FMarketTabSet.Tabs.Objects[0]).iType 这个东西的值是怎么得来的.新手,求大神指点啊,请说

编译器-zeromq socket网络传递结构体

问题描述 zeromq socket网络传递结构体 我在服务器端发了一个结构体,在client端接收,发送应该是正常的,客户端也接到了这个数据但是一访问成员变量就segment fault,zeromq 接收到在zmq::msg_t中有个size()函数返回接收到数据的size 我比对了一下是对的上的 但是一访问成员变量就出错,觉得很奇怪,应该是会编译器以及结构体的存储有关,本人新手,求各位大神指点一二 有分 解决方案 另外 我两端的操作系统以及编译器版本都一样 应该不存在大小端的问题 解决方案

double类型结构体对齐的疑惑

问题描述 double类型结构体对齐的疑惑 32bit的cpu,在msvc中如果结构体有double类型,则以8字节对齐,例如 struct test { char ch; double j; }; ch也会占用8个字节,而32bit的cpu会一次性取到8个字节么?难道不是32bit,4个字节? 为什么要以8个字节来对齐呢?谢谢 解决方案 如果编译器为sse优化,那么是按照128bit,也就是8字节对齐的,如果编译器为sse2优化,那么是按照16字节对齐的.http://www.xuebuyua

Swift结构体与类

在面向过程的编程语言(如C语言)中,结构体用得比较多,但是面向对象之后,如在C++和Objective-C中,结构体已经很少使用了.这是因为结构体能够做的事情,类完全可以取而代之.而Swift语言却非常重视结构体,把结构体作为实现面向对象的重要手段.Swift中的结构体与C++和Objective-C中的结构体有很大的差别,C++和Objective-C中的结构体只能定义一组相关的成员变量,而Swift中的结构体不仅可以定义成员变量(属性),还可以定义成员方法.因此,我们可以把结构体看做是一种轻

C技巧:结构体参数转成不定参数

酷壳:http://coolshell.cn/articles/2801.html 下面这段程序是一个C语言的小技巧,其展示了如何把一个参数为结构体的函数转成一个可变参数的函数,其中用到了宏和内建宏"__VA_ARGS__",下面这段程序可以在GCC下正常编译通过: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <stdio.h>    #define func(...) myfunc((struct