2016-10-24 1 views
-1

나는 조금 혼란스러워하는 C 코드의 작은 부분이 있습니다. C에서 동시에 두 개의 포인터에 할당

int *p, *q, arr[4]={5,8,3,7} 
p = q = arr; 

포인터 할당은 모두 pq 동일한 arr을 의미 하는가? 또는 pq이고 이는 arr입니까? 이것은 잠시 나를 괴롭 히고있다. 어떤 도움을 주겠다.

+2

<10 라인 테스트 프로그램을 사용하면이 문제를 해결할 수 있으며 답을 알려주는 스푼보다 더 많이 기억할 것입니다. – John3136

+0

과제 다음에'printf ("p : % p \ n q : % p \ n", p, q);를 시도하십시오. –

답변

1

할당 연산자 (=)는 올바른 연관입니다. 이것이 의미

a = b = c; 

이다
a = (b = c); 

같이 c의 값 b에 할당하고, 할당이 연산의 결과 값에 할당 a 파싱한다.

= 연산자는 할당 된 값을 반환하도록 정의되어 있으므로 abc으로 설정합니다.

0

pq은 모두 arr (또는 더 정확하게는 &arr[0])을 가리키며, 더 고급 시나리오에서는 차이가 있습니다. C에서 포인터 값을 처리 할 때와 마찬가지로 값 의미를 처리 할 때 값 의미를 처리 할 때 두 가지 방법이 모두 동일합니다.

일반적으로 C에서 = 연산자는 왼손에 할당 된 값 피연산자이므로 할당 할 수있는 모든 유형의 지정을 연결할 수 있습니다.

관련 문제