2010-11-08 134 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