2014-11-13 3 views
0
#include <stdio.h> 
#include <iostream> 
using namespace std; 

int main(int n, char** args) 
{ 
     int x[]= {2}; 
     int y[]= {8}; 
     int *p = x; 
     int *q = y; 

     printf("0x%x 0x%x\n", x, *x); 
     printf("0x%x 0x%x\n", p, **p); 
     printf("0x%x 0x%x\n", y, *y); 
     printf("0x%x 0x%x\n", q, **q); 
     printf("0x%x \n", &p); 
     printf("0x%x \n", &q); 
     system("pause"); 
} 

질문이 같은 반면, 불법 간접을 표시 whyit idk에 포인터C++ 불법 간접 어레이

는 INT 변수 X와 Y 및 INT * 포인터 변수 p와 q를 소개한다. x를 2로 설정하고, y를 8로 설정하고, p를 x 주소로 설정하고, 을 만들고, q를 y의 주소로 설정합니다. 다음 정보를 인쇄하십시오.

"1. x 주소와 x 값 2. p 값과 * p. 값 3. y 주소와 y 값. 4. q의 값과 * q의 값 5. p의 주소 (내용이 아님) 6. q의 주소 (내용이 아닙니다!) " 내 코드와 뭐가 잘못

저를 도와주세요 : ((

+1

찾고있는 것을 생각하면'지능이라면. m'을 쓰면 유효하지 않습니다. 같은 이유로,'int * p'를 쓰면'** p'를 쓸 수 없습니다. –

+1

코드가 당신의 텍스트와 일치하지 않습니다; 'int x = 2;'와'int y = 8;'이어야하고, 나머지 프로그램에서는 주소 연산자''를 사용해야합니다. –

+0

오류를 볼 수는 있지만 어떤 오류 메시지가 나옵니까? 너는 점점 너는 불평하고있다. 합. – user3344003

답변

0

을 나는 이것이 당신이 당신은 C++의 타입 시스템의 기본적인 이해가 부족하고

#include <stdio.h> 
#include <iostream> 
using namespace std; 
int main(int n, char** args) 
{ int x= 2; 
int y= 8; 
int *p = &x; 
int *q = &y; 
printf("0x%x 0x%u\n", &x,x); 
printf("0x%x 0x%u\n", p, *p); 
printf("0x%x 0x%u\n", &y, y); 
printf("0x%x 0x%u\n", q, *q); 
printf("0x%x \n", &p); 
printf("0x%x \n", &q); 
system("pause"); }