#include
#include
#include
int strO (char* myStr[]) {
char str[] = "hello";
myStr[0] = (char*) malloc(sizeof(char) * strlen(str));
strcpy(myStr[0], str);
return 0;
}
int main() {
char* string_list[10] = {NULL};
strO(string_list);
printf("%s\n", string_list[0]);
free(string_list[0]);
return 0;
}
string_list는 char* 에 대한 배열이기 때문에 개별 요소 포인터에 대한 공간은 할당되어있지 않아서 동적 할당으로 공간 할당부터 해야 함.
ㅅㅂ 위에 헤더 날아가노 stdio.h stdlib.h string.h다
포인터는 int나 char처럼 공간을 갖고 있지 않다는 말씀이신가요??
char*[] 형의 배열을 선언하면 char*를 요소로 갖는 배열이 생성되지만 char*이 가리키는 요소의 공간은 생성되지 않음. char*이 어떤 문자열을 가리키도록 만들기 위해서는 스택에서 변수가 pop되지 않도록 main 함수에서 문자열을 생성해서 넣어주든가 동적 할당으로 공간을 힙 영역에 만들어준 후 문자열을 복사해서 함수가 끝나도 계속 데이터가 유지되도록 하든가 둘 중 하나인데 난 후자를 선택한거임.
단순히 char*를 가리키는 배열만 생성한 상태에서 char*은 아무 값도 가리키지 않고 있음
진짜 감사합니다. 복학생이라 여기저기 물어가며 공부하고 있는데 정말 도움됐습니다.