【发布时间】:2015-08-29 17:46:27
【问题描述】:
好的,所以基本上我正在尝试使用 printf 和各种形式的指针来了解这里发生了什么
这是代码
#include <stdio.h>
#include <stdlib.h>
typedef struct mine{
unsigned int memory;
struct mine * next;
}mine;
int main(int argc, char *argv[]){
mine * y;
y = (struct mine *)malloc(sizeof(struct mine));
y->memory = 0xBEEFDEAD;
printf("%x\n",*y);
printf("%x\n",y[0]);
printf("%x\n",y->memory);
printf("%x %x %x\n",y->memory, *y,y[0]);
return 0;
}
这是输出
beefdead
beefdead
beefdead
beefdead beefdead 7c00c0
正如您所见,打印的相同指针在单独分开和组合在一起时,使用 printf 给出不同的结果
这是我打印指针方式的问题,还是 printf 的问题
*y = y[0] = y->内存也是如此
从输出中我不确定这个问题的答案
【问题讨论】:
-
请使用 C bokk 或使用不同的。您在这里做错了太多,表明您确实需要首先正确掌握基础知识。您的代码甚至无法编译。
-
标准警告:不要将
malloc和朋友的结果投射到 C 中! -
@hopjoppe5 你的问题还不清楚。我们无法读懂你的想法;我们只能分析您在此处发布的代码。您在此处发布的内容充满了错误;没有办法解释你可能或可能从你的真实代码中得到的任何输出,只有你能看到。
-
@hopjoppe5 指出代码中的错误是本网站的目的(除其他外)。这不是对您的代码的“攻击”。这也不是对你的攻击;你不是你的代码。
-
听着,我不想在这里为@Olaf 辩护,只是因为他是社区中的一员,享有一定的声誉(顺便说一句,这来自于实际帮助人们),但我必须在阅读了您的其他一些“问题”后承认您非常擅长与试图帮助您的人打架。这是一个很好的例子 - stackoverflow.com/a/32218272/2016408