首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误,‘操作数对二进制无效*(有'long unsigned int’和'int *')‘

错误,‘操作数对二进制无效*(有'long unsigned int’和'int *')‘
EN

Stack Overflow用户
提问于 2017-06-26 21:57:54
回答 4查看 5K关注 0票数 0

当我试图编译我的程序时,遇到了一个问题。

错误:

代码语言:javascript
运行
复制
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) ;

相关代码如下:

代码语言:javascript
运行
复制
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;
}

有人能给我解释一下发生了什么事吗?

提亚

EN

回答 4

Stack Overflow用户

发布于 2017-06-26 22:02:32

你有一个*太多的参数大小。这使得size对于int来说是一个合适的方法。它需要被解引用(*size而不是简单的size)才能使用指针所指向的值。但我认为这是个错误,你不想把size设为指针。

更改为:

代码语言:javascript
运行
复制
int* arraySize(int* array, int size)
票数 2
EN

Stack Overflow用户

发布于 2017-06-26 22:03:59

另一个不相关的问题是:您的if语句将值NULL赋值给array。您应该使用双等号。

票数 0
EN

Stack Overflow用户

发布于 2017-06-26 22:07:42

看一下这条线:

代码语言:javascript
运行
复制
array = (int*) malloc(sizeof(int)* size);

和你的方法签名:

代码语言:javascript
运行
复制
int* arraySize(int* array, int* size)

很明显,你的大小是一个指针,你想根据大小值分配一些内存;但是你在这里尝试的是寻址大小地址。因此,它应该是这样的:

代码语言:javascript
运行
复制
array = (int*) malloc(sizeof(int) * *size);

永远记住,为了

代码语言:javascript
运行
复制
int *size;
size means address of size and *size means values in that address.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44761462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档