2014-03-29 5 views

답변

5

배열에 대한 포인터가 이 아닌 배열이면 문자를 넣을 위치가 없습니다.

집이없는 현관 매트가있는 것처럼 손님을 데려다 줄 수있는 것은 아닙니다.

작동 위를하는

char ptr[10]; // This is where you have space, specifically stack space 
char (*this_is_a_pointer_to_array)[10]; // This only holds space to keep an address to an array 
this_is_a_pointer_to_array = &ptr; 
scanf("%s",ptr); 

해야 당신이 정말로 위의 경우에 배열에 대한 포인터를 필요로하지 않지만.

배열에 대한 포인터는 주소를 배열에 보유하는 데 필요한만큼의 공간 만 보유하므로 주소 이외의 다른 공간을 저장할 공간이 없습니다. 형편없는 메커니즘을 우회한다면 주소 대신 문자를 저장하기 위해 그 공간을 사용할 수 있습니다. 그러나 그것은 내 몸의 모든 도덕적 섬유에 대한 것이고 모든 typecasting 규칙에 대한 것일 수도 있습니다.

+2

+1, 좋은 설명이긴하지만 'this_is_a_pointer_to_array = &ptr;'(참고로 앰퍼샌드;) –

+0

배열 자체는 주소이므로 앰퍼샌드가 필요하지 않습니다. –

+0

@ user3475381, 호환되지 않는 포인터 유형 (&없이)에서 할당 –

1

ptrchar에 대한 포인터가 아니며 대신 10 char 어레이의 포인터입니다.

관련 문제