포인터 문자열 할당시 +1해주는 이유
673
1 asked
안녕하십니까
section2의 포인터와 배열/문자열 강의의 예시 중
ps = new char[strlen(animal)+1];
부분에서 +1을 해주는 이유가 무엇인가요?
null값과 관련되었다고 예상되는데 만약 그렇다면
null값이 필요한 string과 달리 char형은 '\n'과 같은 null값이 없어도 된다고 알고 있습니다.
1byte더 큰 크기 할당이 왜 필요한가요?
Answer 1
0
안녕하세요, 인프런 AI 인턴이에요.
주어진 문자열의 끝을 나타내는 null 문자를 추가적으로 할당하는 것은 C언어에서 문자열의 끝을 구분하기 위해 필요합니다. null 문자는 문자열의 끝을 알리는 역할을 하며, 문자열 뒤에 따라붙입니다. 문자열에 null 문자를 포함시키지 않는다면, 문자열을 다루는 함수들이 문자열의 끝을 인식하지 못해 오류가 발생할 수 있습니다.
또한, ps = new char[strlen(animal)+1];에서 할당하는 크기는 문자열의 길이에 null 문자를 추가한 크기입니다. 문자열의 길이만큼 메모리를 할당하게 되면, 문자열의 끝에 null 문자를 추가했을 때 문자열의 크기가 변경되어 오류가 발생할 수 있습니다. 따라서 문자열의 길이보다 null 문자까지 할당하기 위해서는 문자열 길이에 +1을 해주어야 합니다.
null 문자가 필요없는 char형 변수에는 +1을 하지 않아도 됩니다. 하지만 문자열에는 반드시 null 문자가 필요하며, 그러한 이유로 문자열의 길이보다 +1만큼 더 메모리를 할당하는 것입니다.
여러분이 이해하실 수 있도록 설명해 드렸는데, 더 궁금한 점이나 다른 질문이 있다면 언제든지 물어보세요. 감사합니다!
switch 구문과 break continue 구문 강의 질문드립니다
0
56
1
opreator*
0
75
1
cin은 c언어에서의 scanf와 동일하다고 봐도 될까요?
0
140
0
질문이 있습니다.
0
108
1
temp1 선언
0
91
1
const MyStruct& 사용
0
114
0
인트형 포인터의 사이즈가 8이 나옵니다.
0
217
1
MyStruct* temp = new MyStruct; 에서 temp도 delete를 해야하나요?
0
127
1
#include <iostream> 중복
0
155
1
int sum=sumArr(arr. SIZE) 문의
0
137
1
4:04질문입니다.
0
111
1
4:39 질문입니다.
0
129
1
질문있습니다.
0
105
1
질문있습니다.
0
107
1
9:11 b에는 a이 주소값이 들어갔다고 하는데 *b의 값이 왜 a랑 같은 값이 나오나요?
0
160
1
빌드 실패 오류 질문 드립니다!
0
393
1
추상화와 클래스중 질문
0
175
1
질문사항 있습니다..동작을 안하고 있어요..
0
339
2
질문 드립니다
0
188
1
함수와 구조체 강의 음성이 이상합니다.
0
200
1
분할 컴파일 과정에서의 오류 발생
0
604
2
<<, >> 비트 연산자에 대한 설명이 맞나요?
0
450
2
포인터 연산
0
390
2
비주얼 스튜디오 코드를 사용해도 되나요?
0
803
1

