#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 についてはわかりません。
もう 1 つの質問ですが、1834136 は何ですか? それは符号なしの数字ですか?
感謝