는 다음 코드 한 : 나는 사용하여 함수C의 인수 값이 불변?
void func(uint8 *var) {
uint8 tempvar;
if (var)
var = &tempvar;
*var = 0;
}
를 호출 코드는 선에서 세그먼트 오류를 제공
func(NULL);
을 "* VAR = 0;" 왜냐하면 var는 여전히 메모리 주소 0x0을 가리 키기 때문입니다. 임시 변수에 대한 내 할당이 작동하지 않는 이유를 모르겠습니다!
"임시 변수에 대한 내 할당이 작동하지 않는 이유". 글쎄, 그것은'var'가 원래 null 인 경우 명시 적으로 프로그램에 * 할당을 건너 뛰도록 요청했기 때문에 작동하지 않습니다. 귀하의 'if'조건은 정확히 말합니다. – AnT
@ πάνταῥεῖ - 음, 범위 내의 로컬 변수이고 범위 내에서만 사용하고 있습니다. 매개 변수는 단일 포인터이고 주소의 변경은 호출자 변수를 수정하지 않습니다. 따라서 해당 범위 외부에서 액세스되는 변수는 없습니다. –
이미 가지고 있습니다 ... –