大佬教程收集整理的这篇文章主要介绍了在C中将const赋值给非const,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
struct adt { void * A; }; int new_adt(const void * const A) { struct adt * r = malloc(sizeof(struct adt)); r->A = A; }
我明白了:
我知道我可以使用
@H_104_7@memcpy(&(r->A),&A,sizeof(void *));
解决它,但我必须问:有什么选择吗?
通过使用COnst void * const,我假装没有对输入进行任何更改.而且,现在我想起来了,const void *就足够了,不是吗? (因为我无法更改指针以便它影响调用者)
感谢您抽出宝贵时间阅读.
struct adt { const void * A; };
这将使错误消失.
如果你想修改A到adt,那么new_adt应该采用非const指针.
编辑:更一般的说明,这可能会有所帮助:
通常,const关键字适用于其左侧的类型.但是,如果左侧没有类型,则它将应用于右侧的类型.所以:
const int * A与int const * A相同(const适用于int,而不是指针),但在int * const A中,const适用于指针,而不适用于int.
维基百科上有一个更全面的解释:const-correctness.该页面的“指针和引用”部分包含一个示例,其中包含可应用于指针的const和非const的各种组合.
以上是大佬教程为你收集整理的在C中将const赋值给非const全部内容,希望文章能够帮你解决在C中将const赋值给非const所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。