作者aoksc (年轻ㄟ傲杯杯)
看板C_and_CPP
标题[问题] 新手请教动态配置问题
时间Tue Mar 3 11:37:15 2009
请问各位板友
书在用指标配置动态空间时
会这样写
int *ptr=malloc(100*sizeof(int));
但我看还有另一种写法是
int *ptr=(int *)malloc(100*sizeof(int));
请问多了这个(int *)到底差在哪里?
书上是说 指标变数所指的型态
可是这两种写法跑出来的结果都一样
所以不知道是否有不同的含意呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.71.22.41
1F:推 VictorTom:malloc原回传型态是(void*), 加上(int*)代表强制作转型 03/03 11:40
2F:→ VictorTom:不这麽作有的compiler好像会报warning, 另外个人觉得型 03/03 11:41
3F:→ VictorTom:态用明确转型会让你的code看起来比较清楚一些:) 03/03 11:41
4F:→ aoksc:我是用DEV C 可以过 不过前面不是已经有宣告是int了吗? 03/03 11:50
5F:→ aoksc:还是说有没有写(int *)是差在手动跟自动吗? 03/03 11:52
6F:→ james732:重点是 malloc 这个函式的回传型别 03/03 11:52
7F:→ aoksc:所以说正统的写法是要加(int *) 没写能过是因为编译器? 03/03 11:59
8F:推 zlw:你写 char c = 128; 编译器也会让你过啊,因为没有发生错误 03/03 12:04
9F:→ zlw:可是会有警告,警告的意思就是有机会出现错误,现在无法判定 03/03 12:05
10F:推 zlw:另外可能是因为C++的规定比较严格,没(int*)编译成C++无法通过 03/03 12:09