아래 구조체에서 'p'포인터에 포함 된 값이 잘못 인쇄되었으므로 올바른 인쇄 방법을 찾을 수 없습니다. 어떤 코드가 적합한가요? 코드 :구조체에서 포인터 값을 출력하는 방법
는#include <stdio.h>
struct my_struct{ //structure definition
int a,*p;
};
int main(){
my_struct var;
var.a = 5; //variable definition
var.p = &(var.a); //pointer gets address from variable
printf("%d\n",var.p); // the number 2686744 is printed instead of the number '5'
return 0;
}
'* var.p'와 함께 참조 부호 ... –
포인터 자체는 단지 주소입니다.당신이 가리키는 값을 원한다면'*'연산자, 즉'* var.p '를 사용하여 그것을 역 참조 할 필요가 있습니다. 또한'& (var.a)'의 괄호를 제거 할 수 있고 대신에'& var. a'는 훨씬 더 표준입니다. –
'.'는 단항 역 참조'*'(_not_ multiply!)보다 더 높은 우선 순위를 가지므로'* (var.p) '의 다른 제안에있는 괄호는 엄격하게 선택 사항이며 명확성이 추가 된 것으로 생각하는 독자들에게는 또는 선행 규칙을 외우는데 괴롭힘을 당할 수 없습니다 ;-). Tom의 코멘트에서 알 수 있듯이,'.' 대'&'도 마찬가지입니다. –