首页 文章

从函数返回指针

提问于
浏览
-1

我是C的新手,并试图将指针从我的函数返回到指针变量,并让这个“[Warning]赋值从整数中生成指针而没有强制转换”不知道为什么编译器将它定义为int . 也不能在main之前声明我的函数,它会抛出这个“对free_block'的未定义引用” .

#include <stdio.h>
#include <stdlib.h>
    struct block{
    int num;
};

int main(int argc, char *argv[]) {
    struct block *b;
    b = free_block();

    struct block *free_block(){
        struct block *b = NULL;
        return b;
    }
    return 0;
}

谢谢

是的,我的错,我不太了解c语法,也不知道嵌套函数,soz . 但是在这种情况下可能出错:我试图在不使用malloc或calloc函数的情况下创建自己的内存分配器 . 在我的代码中,我在 pointer = free_space_get(size); 的行上有相同的警告,这里我没有更多的嵌套func(),我的方法在main()之前定义,但仍然不知道我是否必须声明我的函数或者没有,因为回答给我的是,只要在main()之前定义了函数,它就能正常工作 .

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct header{
        size_t size;
        struct header *next;
        unsigned int free;
    };
void *m_alloc(size_t  size){
        size_t total_size;
        void *block;
        struct header *pointer;
        if(!size)  
            return NULL;
        pointer = free_space_get(size);
        if(pointer){
            pointer->free = 0;
            return (void*)(pointer + 1);
        }

    }
struct header *get_free_space(size_t size){
        struct header *b = NULL;
        return b;
    }

int main() {
    return 0;
}

1 回答

  • 0

    您的代码可以重写为

    #include <stdio.h>
    #include <stdlib.h>
    
    struct block{
        int num;
    };
    
    struct block *free_block(){
            struct block *b = NULL;
            return b;
    }
    
    int main(int argc, char *argv[]) {
    
        struct block *b;
        b = free_block();
    
        if(b == NULL) // Checking whether pointer is returned
            printf("\n Recieved NULL \n");
    
        return 0;
    }
    

相关问题