다음 코드는 동일한 기능에 있습니다 :이 포인터는 안전하게 선언 되었습니까?
File *curr = dir -> head_file;
...
f -> next = curr;
가 f -> next
실제로 dir -> head_file
또는 로컬 변수 curr
를 가리키는인가? 마찬가지로,이 함수가 종료되면 curr
이 사라지거나 다른 것을 가리킬 때 문제가 발생합니까?
다음 코드는 동일한 기능에 있습니다 :이 포인터는 안전하게 선언 되었습니까?
File *curr = dir -> head_file;
...
f -> next = curr;
가 f -> next
실제로 dir -> head_file
또는 로컬 변수 curr
를 가리키는인가? 마찬가지로,이 함수가 종료되면 curr
이 사라지거나 다른 것을 가리킬 때 문제가 발생합니까?
f->next
은 curr
에 저장된 값의 사본입니다. curr
이 변경되면 후자에 아무 것도 할당되지 않은 경우 f->next
에 영향을주지 않습니다. curr
도 아니고 f->next
도 dir -> head_file
을 가리 키지 않습니다. 그들은 둘 다 사본입니다.
f -> next = curr;
는 curr
점,이 경우, dir -> head_file
, 그것은 포인터 curr
을 파괴하거나 curr
점에 방향을 변경하지 않습니다하는 곳으로 f->next
점을 만듭니다.
dir->header_file
을 가리키는 것이 안전합니다.
&curr
유형은 File **
유형이 다르며 점에 유의하십시오. 사용하는 변수의 주소를 얻으려면 &
: &curr
C 할당 방식이 명확합니까? – nneonneo
@nneonneo 나는 주로 C 지정에 문제가 없지만 'curr'을 변경하면 'f -> next'에 영향을 미칠지 확실하지 않았다. 나는 그것을 지금 이해한다. 감사! – sbl03