char (*ptr)[10];
scanf("%s",ptr);//inputing a string
왜 작동하지 않습니까? ptr이 문자 배열에 대한 포인터이기 때문에이 방법이 효과가 있습니다.배열의 포인터가 작동하지 않습니다.
char (*ptr)[10];
scanf("%s",ptr);//inputing a string
왜 작동하지 않습니까? ptr이 문자 배열에 대한 포인터이기 때문에이 방법이 효과가 있습니다.배열의 포인터가 작동하지 않습니다.
배열에 대한 포인터가 이 아닌 배열이면 문자를 넣을 위치가 없습니다.
집이없는 현관 매트가있는 것처럼 손님을 데려다 줄 수있는 것은 아닙니다.
작동 위를하는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 규칙에 대한 것일 수도 있습니다.
ptr
은 char
에 대한 포인터가 아니며 대신 10 char
어레이의 포인터입니다.
+1, 좋은 설명이긴하지만 'this_is_a_pointer_to_array = &ptr;'(참고로 앰퍼샌드;) –
배열 자체는 주소이므로 앰퍼샌드가 필요하지 않습니다. –
@ user3475381, 호환되지 않는 포인터 유형 (&없이)에서 할당 –