2010-11-08 111 views
0

球員我想在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; 
} 
+0

我可以問你想完成什麼嗎?你有一大堆冗餘代碼,並且你沒有正確使用'malloc()'。 – 2010-11-08 19:34:56

+0

我想動態分配一個數組並返回第二個方法的指針。 – Khalid 2010-11-08 19:39:35

+0

@哈立德 - 你這樣做,但這種行動本身是無用的。你分配數組,但它不包含任何東西,所以你將它打印出來,即使它可能不包含任何東西(或更糟糕的是垃圾)。那麼該數組的唯一指針就會丟失,所以你以後不能'釋放'你的數組。你的'allocArray()'函數沒有真正的目的 - 它只是調用'malloc()',你可以(和,恕我直言)應該在它的位置調用malloc()。除非你使用C++(或C++編譯器),否則不需要傳遞'malloc()'的返回值,'malloc()'需要'size_t'參數,而不是'int'。 – 2010-11-08 19:52:14

回答

1

你拼錯allocArrayalloArray(兩次,其實)。

+0

我知道這是一個愚蠢的錯誤!我討厭當我有這種錯誤。 – Khalid 2010-11-08 19:33:41

+0

謝謝你的幫助:) – Khalid 2010-11-08 19:34:54