#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. я понятия не имею об этом не @@ а
и еще один вопрос, что такое 1834136? это цифры без знака?
спасибо
'% d' не является правильным спецификатор формата для указателя. – chris
нет, я пытаюсь напечатать значение 5 в версии 2, но это не позволяет это сделать. –
В этом случае вам нужно разыменовать его, чтобы получить значение, на которое оно указывает. – chris