[問題] 錯誤的指標轉換

看板C_and_CPP (C/C++)作者 (偽Wii)時間16年前 (2009/12/31 08:30), 編輯推噓3(305)
留言8則, 6人參與, 最新討論串1/1
參考範例 http://caterpillar.onlyfun.net/Gossip/CGossip/MallocFree.html 工具Dev-C++ int main(void) { int m = 0; int n = 0; printf("輸入二維陣列維度(m*n):"); scanf("%d*%d", &m, &n); int *ptr = malloc(m * n * sizeof(int)); //invalid conversion from `void*' to `int*' 錯誤訊息 int i, j; for(i = 0; i < m; i++) { for(j = 0; j < n; j++) { *(ptr + n*i + j) = i + j; } } for(i = 0; i < m; i++) { for(j = 0; j < n; j++) { printf("%d\t", *(ptr+n*i+j)); } putchar('\n'); } free(ptr); return 0; } ------------------------------------------------------ 想請問 有錯誤的地方 不是已經有給予"*ptr"變數型態int了 為何還會被當成void 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.240.192.25 ※ 編輯: VVll 來自: 123.240.192.25 (12/31 08:33)

12/31 08:41, , 1F
試試看 int *ptr = (int*)malloc
12/31 08:41, 1F

12/31 08:45, , 2F
1樓的方法改完 就沒問題了 但是 為何還要 "再多告訴它型態"
12/31 08:45, 2F

12/31 09:07, , 3F
你看一下紅色錯誤的那行就是答案了
12/31 09:07, 3F

12/31 09:11, , 4F
印象中, 你寫C++會抓這個錯誤, 寫C可能就只有warning了.
12/31 09:11, 4F

12/31 09:12, , 5F
另外, 型態不match是可大可小的事, 最好還是注意一下該
12/31 09:12, 5F

12/31 09:13, , 6F
自己加轉型的就要加, 比如: double d = 5/3; // d = 1.0
12/31 09:13, 6F

12/31 12:17, , 7F
因為C++比C更重視型別安全
12/31 12:17, 7F

12/31 13:54, , 8F
有 void* 的部分主要是給使用者靈活運用的~
12/31 13:54, 8F
文章代碼(AID): #1BE_2kHC (C_and_CPP)
文章代碼(AID): #1BE_2kHC (C_and_CPP)