11.6 다양한 문자열함수들 질문 있습니다
75
작성한 질문수 1
11분쯤에 말씀하신 포인터에 다른 것으로 바꿀려는 것이 안 된다는 말은 이해했습니다만 보여준 dest와 source는 배열임에도 불구하고 왜 다른 것으로 선언이 안 되는지 궁금합니다.
답변 2
1
안녕하세요? 질문&답변 도우미 Soobak 입니다.
배열임에도 불구하고 할당이 안되는 이유는 C언어에서 배열의 이름은 해당 '메모리 블록의 시작 주소' 를 나타내는 포인터와 호환이 되는 형태로 다루어지기 때문입니다.
따라서, 배열 이름은 그 자체로 주소를 나타내는 상수이므로, 다른 값을 할당 받을 수 없습니다.
이해하신 포인터 관점에서의 이유와 같은 이유입니다.
강의 10.4 포인터와 배열 의 3:16 부분 에서의 배열의 이름과 포인터의 연관성에 관한 교수님의 설명을 잠시 참고해보시면 큰 도움이 되실 것 같습니다.
또한, 추후 섹션 13 에서 메모리 레이아웃, 메모리 동적 할당에 대하여 학습하시고 나면, 이유에 대해서 좀 더 명쾌하게 이해가 되실 것입니다.
다만, 지금은 '배열의 이름은 포인터와 호환이 되는 형태' 이기 때문에 말씀하신 방식의 할당 방식이 불가능하다는 정도로 이해하신 후 학습을 이어나가시는 것을 추천 드립니다.
추가적으로 궁금하신 점이 있으시면 편히 댓글 남겨주세요.
0
안녕하세요, 인프런 AI 인턴입니다. 구민우님, 질문 주셔서 감사합니다.
배열과 포인터는 많은 점에서 유사하게 동작하지만, 배열 이름은 상수 포인터로써 초기 선언 후에는 그 주소를 변경할 수 없습니다.
질문하신 내용은 (강의 10:21) 배열의 이름 dest에 “Start something”을 대입하는 것이 안되는 이유에서 다룬 적이 있습니다. 해당 답변을 통해 더 상세한 설명을 보실 수 있습니다.
간단히 설명드리자면, “dest = \“Start something\”;“와 같은 코드는 허용되지 않습니다. 이는 dest가 이미 배열로 메모리 상에 고정된 주소를 갖고 있기 때문입니다. 따라서 배열 이름 자체에 새로운 주소를 대입할 수 없습니다. 대신, 스트링 복사를 위해서는 strcpy() 같은 함수를 사용하거나 직접 배열 요소를 수정해야 합니다.
배열과 포인터의 차이에 대한 더 많은 이해가 필요하다면, 관련 강의 내용 및 자료를 참고하시면 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
Export template 안됨
1
30
2
완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.
1
57
3
main 함수에서 왜 int만 선언이 되는걸까요
1
57
2
8비트 2진수 변환시 왜 1을 더해야하나요?
1
55
2
혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?
1
49
1
프로토타입과 함수간의 인자 불일치
1
73
2
12.12 헤더 관련 질문
1
60
2
Visual Studio Community 2026 사용 문의
1
138
2
Q. 15:30, 부호가 있는 8비트 정수 질문
1
61
2
getchar(), putchar()
1
94
3
강의자리ㅛ
1
80
2
비주얼스튜디오코드로 공부해도 상관없나요?
1
114
2
소스파일안에 여러 파일
1
76
2
F5와 F7의 차이
1
79
2
c = TWO * (a+b); 에서 a와 b는?
1
60
2
; 세미콜론을 붙이는 기준에 문의
1
70
1
Step over 기능 문의
1
53
2
2.6 강의 따옴표 출력 규칙 문의
1
76
2
int main 함수 관련 오류 문의
1
67
2
13.4 words[0]
0
61
2
11.7 함수를 구현해 봤습니다.
1
62
2
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
1
65
2
11.6 my_strcat과 my_strncat을 구현해봤습니다.
1
53
2
11.6 fit_str함수를 구현해 봤습니다.
1
54
2





