球員我想在c中編譯我的程序,但我得到這個錯誤(allocArray的衝突類型)?allocarray衝突的類型
這裏是我的代碼:
#include <stdio.h> #include <stdlib.h> int number(int); char *allocArray(int); int main() { printf("Enter a number: "); int userNumber; scanf("%d", &userNumber); int m= number(userNumber); printf("\nThe number is %d", m); printf("\n"); printf("*****************************************************\n"); printf("The array is %s", alloArray(5)); } int number(int n) { int num = n; return num; } char *alloArray(int num) { char *addr; addr = (char *) malloc(num); //addr = char[num]; return addr; }
我可以問你想完成什麼嗎?你有一大堆冗餘代碼,並且你沒有正確使用'malloc()'。 – 2010-11-08 19:34:56
我想動態分配一個數組並返回第二個方法的指針。 – Khalid 2010-11-08 19:39:35
@哈立德 - 你這樣做,但這種行動本身是無用的。你分配數組,但它不包含任何東西,所以你將它打印出來,即使它可能不包含任何東西(或更糟糕的是垃圾)。那麼該數組的唯一指針就會丟失,所以你以後不能'釋放'你的數組。你的'allocArray()'函數沒有真正的目的 - 它只是調用'malloc()',你可以(和,恕我直言)應該在它的位置調用malloc()。除非你使用C++(或C++編譯器),否則不需要傳遞'malloc()'的返回值,'malloc()'需要'size_t'參數,而不是'int'。 – 2010-11-08 19:52:14