我写这段代码:
#include <string.h>
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
int main() {
int tst;
tst = 23;
char buf[0];
int * k = &tst;
printf("%p.. %d\n", k, *k);
sprintf(buf, "%p", &tst);
intptr_t x = buf;
int* y = x;
printf("%p...%d", y, *y);
return 0;
}
及其输出:
0028FF34.. 23
0028FF34...942813232
所以用相同的指针我有不同的价值!
我必须做什么才能获得相同的价值?
编辑:我更改代码:
int main() {
int tst;
tst = 23;
char buf[4];
int * k = &tst;
printf("%p.. %d\n", k, *k);
sprintf(buf, "%p", &tst);
void* i;
sscanf(buf,"%p",&i);
int* o = i;
printf("i: %p %d\n",i, *o);
intptr_t x = buf;
int* y = x;
printf("%p...%d\n", y, *y);
return 0;
}
它可以正常运行,但是在我的计算机上有问题!
最佳答案
K通过打印K包含tst int * k = &tst;
的地址,您就是tst的打印机地址。并通过解引用K来打印tst的值,因为K包含tst的地址。
关于c - 相同的指针如何在c中获得不同的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23961835/