DFSstar 2023-12-05 15:20 采纳率: 85.7%
浏览 7
已结题

C函数指针 void *

虽然我猜猜不太用的上,但是很想搞懂,为什么会出错
[Warning] cast from pointer to integer of different size [-Wpointer-to-int-cast]
[Warning] returning 'int' from a function with return type 'void *' makes pointer from integer without a cast [-Wint-conversion]

在我理解void是不允许有返回值的,但是void*可以是任意返回值,那么main中的变量b是int类型,s函数中的result也是int类型,return也是int类型,为什么会有这个报错呢?

大家解解看,是不是我钻牛角尖里去了

#include<stdio.h>

void *s(const void*);

int main(){
    int a, b;
    a = 3;
    
    b = s(&a);
    printf("%d", b);
    
    return 0;
}

void *s(const void* num) {
    int result;
    result = *(int *)num + 1;
    return result;
}
  • 写回答

3条回答 默认 最新

  • 关注

    void*可以是任意返回值, 是错误的, 返回的是指针, 其它不行.

    #include <stdio.h>
    
    void *s(const void *);
    
    int main()
    {
        int a, b;
        a = 3;
    
        b = *(int *)s(&a);
        printf("%d", b);
    
        return 0;
    }
    
    void *s(const void *num)
    {
        static int result;
        result = *(int *)num + 1;
        return &result;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月6日
  • 已采纳回答 12月6日
  • 创建了问题 12月5日