#include <stdio.h>
#include <stdlib.h>
struct integer2{
int* valuePtr;
struct integer2* next;
};
typedef struct integer2* intpointer2;
int main() {
int value2 = 5;
int* dpointer = &value2;
intpointer2 intPtr2 = (intpointer2)malloc(sizeof(struct integer2));
//intPtr2->valuePtr = (int*)malloc(sizeof(int));
printf("Version1\n");
intPtr2->valuePtr = value2; //dereference
printf("intPtr2->valuePtr address %p\n",&intPtr2->valuePtr);
printf("intPtr2->valuePtr value: %d\n", intPtr2->valuePtr);
//print 5
printf("--------------------------------------------\n");
printf("Version2\n");
intPtr2->valuePtr = &value2;
printf("intPtr2->valuePtr address %p\n",&intPtr2->valuePtr);
printf("intPtr2->valuePtr value: %d\n", intPtr2->valuePtr);
printf("intPtr2->valuePtr value: %d\n", (*intPtr2).valuePtr);
//print 1834136
printf("--------------------------------------------\n");
return 0;
}
嗨,我有大约指针&提领指针和间接引用
在版本#1一个问题,当我把intPtr2->valuePtr = value2;
我可以打印5
但在版本#2的值,当我把intPtr2->valuePtr = &value2;
我打印一个奇怪的输出像1834136
不是valuePtr的指针吗?我存储value2的地址应该没有问题。 和版本#1,我只存储的int,但我可以打印的值为5. 我不知道这个@@ a
和一个问题,什么是1834136?它是一个无符号数字?
感谢
'%d'不是指针的正确格式说明符。 – chris 2013-04-07 04:21:11
不,我试图在版本2中打印5的值,但不允许这样做。 – 2013-04-07 04:25:45
在这种情况下,您需要取消引用它以获取它所指向的值。 – chris 2013-04-07 04:27:28