C 如何创建一个将10个字节分配给指针的函数,然后检查指针是否已分配,返回布尔值?

C 如何创建一个将10个字节分配给指针的函数,然后检查指针是否已分配,返回布尔值?,c,function,pointers,boolean,definition,C,Function,Pointers,Boolean,Definition,对不起,我的英语不好。我现在正在从根本上学习C编程,我有一个家庭作业 问题是:创建一个动态分配10字节给指针的函数,然后检查指针是否已分配?该函数必须是布尔函数,并返回布尔值 函数原型:bool allocate10字节(uint8_t*outPtr) 请帮我做这个。非常感谢 你的意思好像是 #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <stdint.h>

对不起,我的英语不好。我现在正在从根本上学习C编程,我有一个家庭作业

问题是:创建一个动态分配10字节给指针的函数,然后检查指针是否已分配?该函数必须是布尔函数,并返回布尔值

函数原型:bool allocate10字节(uint8_t*outPtr)


请帮我做这个。非常感谢

你的意思好像是

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>

bool allocate10Bytes( uint8_t **outPtr )
{
    const size_t N = 10;

    *outPtr = malloc( N * sizeof( uint8_t ) );

    return *outPtr != NULL;
}

int main(void) 
{
    uint8_t *p;

    bool success = allocate10Bytes( &p );

    if ( success ) free( p );

    return 0;
}
这是无效的。要成为out参数,指针必须声明为
uint8\u t**outPtr
。也就是说,参数(某个指针)应通过指向指针的指针通过引用传递

<强>注:如果你试图编译程序作为C++程序,那么至少改写这个语句

*outPtr = malloc( N * sizeof( uint8_t ) );


并删除标题

这几乎是
malloc
的包装。
outPtr
的类型似乎是错误的,它不应该是
uint8\u t**outPtr
?函数的签名应该是
bool allocate10字节(uint8\u t**outPtr)。它应该是一个指向指针的指针。然后这个函数将是一个无用的函数来泄漏内存…关于原型,这是我从导师那里得到的,他说在没有姜黄的情况下,我没有权利更改它。假设没有错,如果你的“导师”认为他提供的原型可以工作,他就没有资格成为C语言的导师。谢谢你的回答,但是我在测试这个程序时遇到了问题。我目前正在使用DevC++(按照我导师的要求),问题是:【错误】在*outPtr=malloc(N*sizeof(uint8_t));行中从'void*'到'uint8_t*{aka unsigned char*}'[-fppermissive]的转换无效;。你能告诉我更多吗?@phongistreal我对你正在运行的代码一无所知。我回答了你的问题。如果你的代码有问题,那么请问一个新问题。@ PuangISnTral:这是一个C++错误消息。你正在用C++编译器编译这个代码,但是你标记了问题C。你想使用哪种语言?@ PuangiSnTrAL,你可以用以下方式编写MaloC调用:OutpTr=(Unt8*t*)Malc(n*(sieToof(UTI8YT))在这种情况下,程序将使用C++编译器编译。我需要C语言,我将用GCC编译编译器试试它。
*outPtr = malloc( N * sizeof( uint8_t ) );
*outPtr = ( uint8_t * )malloc( N * sizeof( uint8_t ) );