2015-01-22 4 views
0

를 발행 그래서 코드 :Definig 포인터가 나란히 및 유형

int *mine, *yours; // note this declaration 
mine = new int; 
yours = mine; 
*yours = 8; 
delete yours; 
*mine = 12; 
mine = NULL; 

우리는 당신이처럼 포인터 광산을 정의 할 수 있습니까? 그리고이 코드에 문제가 있습니까? 또한

,

size_t length = 47; 
int* plength = &length; 

이 코드를 잘인가?

+0

직접 해보시겠습니까? –

답변

2

내 포인터를 정의 할 수 있습니까?

예. 당신이 할 수 없다면 컴파일러는 불평했을 것입니다.

이 코드에는 어떤 것이 있습니까?

예. 두 포인터 모두 yours을 통해 삭제 한 후 mine을 통해 액세스하는 동일한 개체를 가리 킵니다. 삭제 된 객체의 잔재에 액세스하면 정의되지 않은 동작이 발생합니다.

이 코드는 괜찮습니까?

아니요. 아마도 컴파일러에서 말한 것 같습니다. size_tint은 서로 다른 유형이므로 int* 포인터에 악의적 인 캐스트가없는 size_t 개체의 주소를 지정할 수 없습니다.

0

내 포인터를 정의 할 수 있습니까? 그리고이 코드에 문제가 있습니까?

물론 좋습니다. 내가

typedef int *p_int; 
p_int yours, mine; // Both members are pointers to integer type 

size_t & int가, 다른 유형의, 당신은이 방법으로 같은 유형의 포인터 선언이있을 때 더 명확하게하기 위해 typedef을 사용할 수 있습니다 제안 곳의 정수 포인터 plength 할 수있는 정수 멤버의 주소 만 포인트 만 다른 사람들은 아닙니다.