作者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