나는 조금 혼란스러워하는 C 코드의 작은 부분이 있습니다. C에서 동시에 두 개의 포인터에 할당
int *p, *q, arr[4]={5,8,3,7}
p = q = arr;
포인터 할당은 모두
p
및
q
동일한
arr
을 의미 하는가? 또는
p
은
q
이고 이는
arr
입니까? 이것은 잠시 나를 괴롭 히고있다. 어떤 도움을 주겠다.
나는 조금 혼란스러워하는 C 코드의 작은 부분이 있습니다. C에서 동시에 두 개의 포인터에 할당
int *p, *q, arr[4]={5,8,3,7}
p = q = arr;
포인터 할당은 모두
p
및
q
동일한
arr
을 의미 하는가? 또는
p
은
q
이고 이는
arr
입니까? 이것은 잠시 나를 괴롭 히고있다. 어떤 도움을 주겠다.
할당 연산자 (=
)는 올바른 연관입니다. 이것이 의미
a = b = c;
는
이다a = (b = c);
같이 c
의 값 b
에 할당하고, 할당이 연산의 결과 값에 할당 a
파싱한다.
=
연산자는 할당 된 값을 반환하도록 정의되어 있으므로 a
및 b
을 c
으로 설정합니다.
p
및 q
은 모두 arr
(또는 더 정확하게는 &arr[0]
)을 가리키며, 더 고급 시나리오에서는 차이가 있습니다. C에서 포인터 값을 처리 할 때와 마찬가지로 값 의미를 처리 할 때 값 의미를 처리 할 때 두 가지 방법이 모두 동일합니다.
일반적으로 C에서 =
연산자는 왼손에 할당 된 값 피연산자이므로 할당 할 수있는 모든 유형의 지정을 연결할 수 있습니다.
<10 라인 테스트 프로그램을 사용하면이 문제를 해결할 수 있으며 답을 알려주는 스푼보다 더 많이 기억할 것입니다. – John3136
과제 다음에'printf ("p : % p \ n q : % p \ n", p, q);를 시도하십시오. –