글로벌 포인터를 가리키는 로컬 포인터를 사용하고 싶습니다. 포인터는 로컬 포인터이고 문자열은 전역입니다. 이 코드를 실행하여 로컬 포인터를 함수 "myfun"에 전달하면 포인터가 변경되지 않습니다. 즉, 포인팅 주소가 변경되지 않습니다. 인쇄 된 값은 "NULL"입니다.글로벌 함수에 대한 로컬 포인터
누군가 gcc에서 이것이 작동하지 않는 이유를 말해 줄 수 있습니까?
#include <stdio.h>
char *str[] = { "String #1", "Another string" };
void myfun(void * p, int i)
{
p = (void *) &str[ i ][ 0 ];
}
int main(void)
{
void * ptr1, * ptr2;
myfun(ptr1, 0);
myfun(ptr2, 1);
printf("%s\n%s\n", ptr1, ptr2);
}
당신은 우리에게 * 어떻게 * 작동하지 않는지 말함으로써 시작합니다. 당신은 무엇을 기대 했습니까? 실제로 무슨 일이 있었습니까? – abelenky
향후 독자의 혜택을 누리시면, "편집 할 수 없다"라는 내용의 설명을 포함하도록이 책을 편집하면 좋을 것입니다. 컴파일되지 않습니까? 충돌? 실행하지만 예상 한 동작을 나타내지 않습니다? – razlebe
나는 그것을 편집했다. – Marsil