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

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日

悬赏问题

  • ¥15 软件工程用例图的建立(相关搜索:软件工程用例图|画图)
  • ¥15 如何在arcgis中导出拓扑关系表
  • ¥15 处理数据集文本挖掘代码
  • ¥15 matlab2017
  • ¥15 在vxWorks下TCP/IP编程,总是connect()报错,连接服务器失败: errno = 0x41
  • ¥15 AnolisOs7.9如何安装 Qt_5.14.2的运行库
  • ¥20 求:怎么实现qt与pcie通信
  • ¥50 前后端数据顺序不一致问题,如何解决?(相关搜索:数据结构)
  • ¥15 基于蒙特卡罗法的中介效应点估计代码
  • ¥15 罗技G293和UE5.3