는 그냥 함수 포인터를 통해 데이터에 액세스 :
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
void change_string(char *str)
{
size_t i;
/* As an example, make it all upper case. */
for(i = 0; str[i]; ++i)
str[i] = toupper(str[i]);
}
int main(void)
{
char buffer[32];
char *str = buffer;
strcpy(str, "test string");
change_string(str);
printf("it's now %s\n", str);
return EXIT_SUCCESS;
}
이 생각하는 자, 당신은 표준 strcpy()
기능을 정확히 설명하는 범주의 것을 알 수 있습니다. C에서 매우 일반적인 작업입니다.
UPDATED : 데이터가 아니라 포인터 자체를 변경하는 방법에 대한 의문이 크게 제기되었습니다. 아마 이것이 모두 함께 의미 였지만 나는 이해하지 못했습니다.
문제의 해결책은 괜찮지 만, 개인적으로 가능하면 내가, 반환 값으로 작업하는 것이 더 편리 찾을 :
이
char * change_pointer(char *str)
{
return str + 1;
}
int main(void)
{
char *str = "test string";
printf("now '%s'\n", str);
str = change_pointer(str);
printf("now '%s'\n", str);
return EXIT_SUCCESS;
}
포인터 (들)도 const
-declared 일 과정의 수와 은이어야합니다. 버퍼링 된 텍스트를 변경하지 않아도됩니다.
주의 : 'str'포인터를 증가 시키면 할당 된 메모리에 핸들이 버려 지므로 메모리 누수가 발생합니다. –
Johnathan은 누수보다 더 나쁘지 만 좋은 점을 만듭니다. * malloc * 메모리에있는 유일한 포인터를 증가시키고 ** 증가 된 값을 자유롭게하려고 시도하면 프로그램이 거의 충돌합니다. . – NVRAM