2013-03-28 2 views
-2

다음 코드는 동일한 기능에 있습니다 :이 포인터는 안전하게 선언 되었습니까?

File *curr = dir -> head_file; 
... 
f -> next = curr; 

f -> next 실제로 dir -> head_file 또는 로컬 변수 curr를 가리키는인가? 마찬가지로,이 함수가 종료되면 curr이 사라지거나 다른 것을 가리킬 때 문제가 발생합니까?

+2

C 할당 방식이 명확합니까? – nneonneo

+0

@nneonneo 나는 주로 C 지정에 문제가 없지만 'curr'을 변경하면 'f -> next'에 영향을 미칠지 확실하지 않았다. 나는 그것을 지금 이해한다. 감사! – sbl03

답변

0

f->nextcurr에 저장된 값의 사본입니다. curr이 변경되면 후자에 아무 것도 할당되지 않은 경우 f->next에 영향을주지 않습니다. curr도 아니고 f->nextdir -> head_file을 가리 키지 않습니다. 그들은 둘 다 사본입니다.

0
f -> next = curr; 

curr 점,이 경우, dir -> head_file, 그것은 포인터 curr을 파괴하거나 curr 점에 방향을 변경하지 않습니다하는 곳으로 f->next 점을 만듭니다.

0

dir->header_file을 가리키는 것이 안전합니다.

&curr 유형은 File ** 유형이 다르며 점에 유의하십시오. 사용하는 변수의 주소를 얻으려면 & : &curr

관련 문제