当前位置:  开发笔记 > 编程语言 > 正文

C指针混乱

如何解决《C指针混乱》经验,为你挑选了1个好方法。

我想在内存中存储一​​个字符串并稍后阅读:

$$->desc.constant->base.id =  (char*)malloc(200);
sprintf($$->desc.constant->base.id, "%f", $1);
printf("->%s\n", $$->desc.constant->base.id); //LINE A
printf("->%i\n", $$->desc.constant); //LINE B

//SOME OTHER CODE

//Then, later on in a function call:

printf("%i", expr->desc.constant); // LINE D
printf("%s", expr->desc.constant->base.id); // LINE C

尽管B行和D行显示相同的地址,但C行中的printf失败并出现Segmentation故障.我错过了什么?

真的很感激任何帮助!



1> Johannes Sch..:
printf("->%i\n", $$->desc.constant); //LINE B

那是无效的.当您在它之前显示constant实际上是指针的行时,您不能将其视为类型int.它们并不具有相同的尺寸和对齐方式.使用用于的格式void*.它将正确输出内存地址:

printf("->%p\n", (void*)$$->desc.constant); //LINE B

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有