question regarding to C
登录 | 论坛导航 -> 华新鲜事 -> 社会百科 | 本帖共有 13 楼,分 1 页, 当前显示第 1 页 : 本帖树形列表 : 刷新 : 返回上一页
<<始页  [1]  末页>>
作者:dearjohn (等级:2 - 初出茅庐,发帖:76) 发表:2003-07-01 15:29:08  楼主  关注此帖
question regarding to C
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>

int main()
{
int n = 3;
double *tptr = malloc(n*sizeof(double));
if (tptr != NULL)
free(tptr);
return 0;
}



got such error:

error C2440: 'initializing' : cannot convert from 'void *' to 'double *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast

what's wrong with it? Thanks
Put your OWN COOL signature here!
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:simon (等级:10 - 炉火纯青,发帖:6859) 发表:2003-07-01 15:34:35  2楼 评分:
I compiled and run it with cc and gcc under unix
and there is no problem.
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:dearjohn (等级:2 - 初出茅庐,发帖:76) 发表:2003-07-01 15:37:03  3楼 评分:
I am using VC, seems
I have to convert the type in this program.

double *tptr = (double*) malloc(n*sizeof(double));

after using this statement, there is no errors, faint. Do you know why? Is it because of VC's complier settings?
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:hula (等级:7 - 出类拔萃,发帖:3677) 发表:2003-07-01 16:45:35  4楼 评分:
是的
c++中付值的时候类型必须是安全的。c中就不用。

你用VC default 是c++
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者: (等级:2 - 初出茅庐,发帖:128) 发表:2003-07-01 17:03:30  5楼
I am using VC, seemsI have to convert the type in this program. double *tptr = (double*) malloc(n*sizeof(double)); after using this statement, there is no errors, faint. Do you know why? Is it because of VC's complier settings?
suggest use: double *tptr = new double[n]
if you use malloc(), you must tell which kind of type you want to convert.

suggest use new and delete in C++:

double *tptr = new double[n];
...
delete tptr;
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:dearjohn (等级:2 - 初出茅庐,发帖:76) 发表:2003-07-01 19:45:34  6楼
是的c++中付值的时候类型必须是安全的。c中就不用。 你用VC default 是c++
那么请问VC的default可不可以改成C?谢谢
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:hula (等级:7 - 出类拔萃,发帖:3677) 发表:2003-07-01 20:07:18  7楼
那么请问VC的default可不可以改成C?谢谢
你用的哪个版本的VC?
找找啦,应该有选项的啦。

找不到就手工把 /TP 换成 /TC
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:hula (等级:7 - 出类拔萃,发帖:3677) 发表:2003-07-01 20:08:41  8楼
那么请问VC的default可不可以改成C?谢谢
当然你要知道c++的类型安全是一种进步
养成习惯是好事情。
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:hula (等级:7 - 出类拔萃,发帖:3677) 发表:2003-07-01 20:15:28  9楼
suggest use: double *tptr = new double[n]if you use malloc(), you must tell which kind of type you want to convert. suggest use new and delete in C++: double *tptr = new double[n]; ... delete tptr;
呵呵,malloc比new更有效率
new(int n)
{
void *p = malloc(n * sizeof(object));
for i = 0 to n
{
p[i]->constructor();
}
}
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:dearjohn (等级:2 - 初出茅庐,发帖:76) 发表:2003-07-01 21:32:36  10楼
你用的哪个版本的VC?找找啦,应该有选项的啦。 找不到就手工把 /TP 换成 /TC
我是用VC6.0,原来可以改成default C吗?
那就太好了,因为我现在在赶一个project,是用C的,如果像你说得那样的话,C++ default的编译环境可以改成C default的话,那就太好了
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:dearjohn (等级:2 - 初出茅庐,发帖:76) 发表:2003-07-01 21:48:10  11楼
是的c++中付值的时候类型必须是安全的。c中就不用。 你用VC default 是c++
这是我在别处看到的
在QA003121 "VC中的debug版和Release版本的程序有什么区别"中我们介绍了Debug和Release版本的主要区别。在MFC中,还大量使用了ASSERT宏,这些宏通常可以来纠正一些错误,如还没有初始化指针就使用等。你所遇到的信息就是ASSERT宏报告的错误。通常你要检查一下是否存在错误。在Release方法下,ASSERT宏不会执行,所以也没有错误信息。不过,MFC中的ASSERT宏有时管得有点宽,如果确认没有错误,也可以不理会它。


果真是这样吗?可惜我的时间了,呜呜呜,我是把书上的程序照抄上去都出错!真得要哭了!
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:va (等级:1 - 微不足道,发帖:71) 发表:2003-07-01 22:38:10  12楼 评分:
replace double *tptr = malloc(n*sizeof(double));
with double *tptr = (double *) malloc(n*sizeof(double));

you need an explicit cast since malloc returns pointers of type void *. otherwise compiler will complain.
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:鱽鳓 (等级:2 - 初出茅庐,发帖:259) 发表:2003-07-01 22:52:28  13楼
double *tptr = (double *)malloc(n*sizeof(double));
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
论坛导航 -> 华新鲜事 -> 社会百科 | 返回上一页 | 本主题共有 13 篇文章,分 1 页, 当前显示第 1 页 | 回到顶部
<<始页  [1]  末页>>

请登录后回复:帐号   密码