gpt4 book ai didi

c - 关于指针和奇怪的错误

转载 作者:太空宇宙 更新时间:2023-11-04 05:53:07 25 4
gpt4 key购买 nike

我正在对指针进行非常简单的操作,但出现错误。我有一个获取 block 的函数,它是内存中连续的“ block ”,我想用下面的信息填充它。 blockmalloc 大小为 (sizeof(int)+12+size)。 username 的长度为 9 个字节(带'\0')。

typedef const char* const UserName;

static void changeAllFields(void **block, UserName username, int size){
*((int*)(*block)) = size;
(*block) += sizeof(int);
*((char*)(*block)) = NULL;
(*block) += 2;
strcpy(*block, username);
(*block) += 9;
*((char*)(*block)) = NULL;
(*block) += size;
*((char*)(*block)) = NULL;

我得到的错误:

assignment makes integer from pointer without a cast [-Wint-conversion]

指向:*((char*)(*block)) = NULL;

怎么了?

最佳答案

NULL是一个指针值,但您将其写入 *((char*)(*block))其类型为 char .如果你真的想写一个 char值为零,它应该是:

*(char*)(*block) = 0;

还要注意 void* 上的算术运算正如你在 (*block) += 2; 中所做的那样是非法的,尽管一些编译器可能支持它们作为扩展。

关于c - 关于指针和奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34422416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com