문자열을 heap에 만들어 보자.
변경할수 있다고 했지.. 좋다고는 안했다.
결론부터 말하자면, 이렇게는 잘 사용하지 않는다. 왜?
불편하거덩
그래도 일단 한번 만들어 보자.
앞서 char*이 변경 불가능하다고 했는데
변경 불가능한 이유는 메모리의 DS(데이터세그먼트)의 RO 영역에 만들어 지기 때문이다.
응.. 그래? 그렇다면 RO가 아닌 영역에 만들면 변경할수 있나? 그렇다! 변경 가능해진다.
그래서 변경 가능한 heap영역에 만들어보자.
#include <stdio.h>
void my_strcpy(char* dst, const char* src) {
if (dst == NULL) return;
if (src == NULL) return;
//while (*dst++ = *src++);
// 아래 코드는 위와 코드인데, 이해를 돕기 위해 풀어쓴것뿐이다.
while (*src != '\\0') {
*dst = *src;
src += 1;
dst += 1;
}
//dst += 1;
*dst = '\\0';
}
int main() {
char str1[32] = "Hello";
char* str2 = (char*)malloc(sizeof(char) * 10);
if (str2 == NULL) { return; }
strcpy(str2, "World");
printf("str1: %s\\n", str1);
printf("str2: %s\\n", str2);
str1[0] = 'x';
*(str1+1) = 'y';
printf("str1: %s\\n", str1);
str2[0] = 'a';
*(str2 + 1) = 'b';
printf("str2: %s\\n", str2);
my_strcpy(str1, str2);
printf("str1: %s\\n", str1);
printf("str2: %s\\n", str2);
free(str2);
return 0;
}