当我试图编译我的程序时,遇到了一个问题。
错误:
main.c:26:42: error: invalid operands to binary * (have 'long unsigned int' and 'int *')
array = (int*) malloc(sizeof(int)* size);
^
main.c:30:50: error: invalid operands to binary * (have 'long unsigned int' and 'int *')
array = (int*) realloc(array, sizeof(int)* size) ;
相关代码如下:
int* arraySize(int* array, int* size)
{
size = 0;
while ((size > 20) || (size < 1))
{
printf("What is the size of your array? (1 - 20)\n");
scanf("%d", &size);
if ((size > 20) || (size < 1))
{
printf("Invalid selection.\n");
}
}
//checking if array has been allocated before
if(array = NULL)
{
array = (int*) malloc(sizeof(int)* size);
}
else
{
array = (int*) realloc(array, sizeof(int)* size) ;
}
printf("\nSize of array: array[%d]\nReturning...", size);
return array;
}
有人能给我解释一下发生了什么事吗?
提亚
发布于 2017-06-26 22:02:32
你有一个*太多的参数大小。这使得size对于int来说是一个合适的方法。它需要被解引用(*size而不是简单的size)才能使用指针所指向的值。但我认为这是个错误,你不想把size设为指针。
更改为:
int* arraySize(int* array, int size)
发布于 2017-06-26 22:03:59
另一个不相关的问题是:您的if
语句将值NULL
赋值给array
。您应该使用双等号。
发布于 2017-06-26 22:07:42
看一下这条线:
array = (int*) malloc(sizeof(int)* size);
和你的方法签名:
int* arraySize(int* array, int* size)
很明显,你的大小是一个指针,你想根据大小值分配一些内存;但是你在这里尝试的是寻址大小地址。因此,它应该是这样的:
array = (int*) malloc(sizeof(int) * *size);
永远记住,为了
int *size;
size means address of size and *size means values in that address.
https://stackoverflow.com/questions/44761462
复制相似问题