c - 在 C 中将 const 赋值给非常量

标签 c constants void-pointers

在以下内容中:

struct adt { void * A; };

int new_adt(const void * const A)
{
    struct adt * r = malloc(sizeof(struct adt));
    r->A = A;
}

我得到:

warning: assignment discards qualifiers from pointer target type


我知道我可以用

memcpy(&(r->A), &A, sizeof(void *));

要解决它,但我必须问:还有其他选择吗?

通过使用 const void * const 我假装说不会对输入进行任何更改。另外,现在我想到了, const void * 就足够了,不是吗? (因为我不能改变指针以影响调用者)

感谢您花时间阅读。

最佳答案

By using const void * const I pretend to say that no changes will be made to the input.

没有假装说不会对输入进行任何更改,您已明确告诉编译器您有< strong>保证不会对输入进行任何更改。

绝不能做你正在做的事。

关于c - 在 C 中将 const 赋值给非常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4963990/

相关文章:

字符指针和空间搜索

php - PHP 中的 Defined() 发生 fatal error

java - java 中宏替换的替代方案

c++ - 将数据从 const void *data 转换为 double

在C中通过memcpy将一个矩阵复制到另一个矩阵

c++ - 无法将库与 cmake 中的测试二进制文件链接

C 串行通信。 WriteFile 成功,但我的设备仅处理第一个字符

c - 奇怪的双指针更新内存位置

C++ 在构造函数中定义 const

objective-c - 如何测试 *void 指针是否指向 Objective C 中的 NSObject