2 whoami wang whoami_wang 于 2014.12.17 17:31 提问

结构体对象使用malloc初始化时候有办法直接对结构体变量赋值吗

结构体对象使用malloc初始化时候有办法直接对结构体变量赋值吗?

5个回答

lx624909677
lx624909677   Ds   Rxr 2014.12.17 19:27
已采纳

如果是C++的结构体,可以在构造函数中赋值,比如
struct data
{
int a;
data()
{
a = 1;
}
};

lx624909677
lx624909677 不好意思,这个是new的时候才能好用的方法。malloc的话必须要手动初始化,建议使用new
接近 3 年之前 回复
u011767611
u011767611   2014.12.17 17:50

你动态分配了结构体变量无非是,后面的工作需要对它进行赋值,以及各种运算。
那么,你所说malloc初始化直接赋值。是指什么样的情况的,难道是像c++中的
(构造函数)。事实上c++的构造函数在使用前你也需要用

className mycClass=new className

使用new分配内存的

#include <iostream>
using namespace std;
class className
{
    public:
    int x;
    int y;
    private:
    int a;
    int b;
};
int main(void)
{
    className * myClass=new className;
    myClass->x=1;
    myClass->y=2;
    cout<<myClass->x<<endl;
    cout<<myClass->y<<endl;
    return 0;
}

而在c里面你使用malloc分配了内存空间,你后面无非是通过指针去访问它!
怎么,感觉你像是在问,malloc分配内存后,能否自动初始化(而不是初始化malloc,后赋值)
希望能帮到你!

bdmh
bdmh   Ds   Rxr 2014.12.17 17:34

没让你这么干,就老实实的,该怎么赋值就怎么赋值

PeeNut
PeeNut   2014.12.17 18:36

我们常见的是直接把结构全部初始化为空,用memset函数来实现,你是要初始化成一些内容的话,有个用法不知道是不是你想要的:
struct ST_Name
{
int iCnt;
char szTemp[128];
...
}
stTest=
{
123,
"asdfgh",
...
}

panziwen86
panziwen86   2014.12.18 14:43

你用calloc(1,size)吧,可以初始化为0

Csdn user default icon
上传中...
上传图片
插入图片