首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于malloc()的一个有关问题

2013-12-19 
关于malloc()的一个问题。本帖最后由 hyp41226 于 2013-12-17 20:59:56 编辑struct flex{int countdouble

关于malloc()的一个问题。
本帖最后由 hyp41226 于 2013-12-17 20:59:56 编辑

struct flex
{
    int count;
double average;
double scores[];   //伸缩型数组成员
};

void showFlex(const struct flex * p);
int main(void)
{
    struct flex * pf1, *pf2;
int n = 5;
int i;
int tot = 0;

//为结构和数组分配存储空间
pf1 = malloc(sizeof(struct flex ) + n * sizeof(double));

我记得malloc加面都要用类型指派啊?(什么时候必须指派???)如果这段要指派类型应该用什么类型?(struct flex *)??????
[解决办法]
malloc返回的是void类型指针  使用的时候最好强制转换一下  
这什么东东啊  CSS?
[解决办法]
void*型,转成什么都可以
[解决办法]
引用:
malloc返回的是void类型指针    这个我知道。
我的问题是malloc前面的类型指派是必须要加上去的吗?

比如说
int * p;
......
1.    p = (int *)malloc(30 * sizeof(int));
2.    p = malloc(30 * sizeof(int));
这两种方法都对?也就是说类型指派不是必须的?

因为起初C中没有void*类型,malloc返回的是char*类型,所以要求必须强制转换
但是自void*加入以后,可以不转换,也可以转换
不过有两点
1.C中可以不转换,可以编译通过
2.C++中必须强制转换,否则不能通过编译

热点排行