#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 是什么?它是一个无符号数字?
谢谢