inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

C로 배우는 자료구조 및 여러가지 예제 실습

문자열

3강 문자열에 등장하는 코드에 관한 질문입니다.

301

JJ

작성한 질문수 6

1

```/ strdup이 비표준이라 같은 기능을 하는 코드를 main내에 직접 삽입하였습니다. /

include

include

int main() {

int i=0;

char *words[100];

char buf[100];

while(i<4 && scanf("%s", buf)!=EOF) {

char * tmp=(char *)calloc(strlen(buf)+1, sizeof(char)); /* 1 */

if(tmp!=NULL) {

strcpy(tmp, buf);

words[i++]=tmp;

}

}

for(i=0 ; i<4 ; ++i) {

printf("%s\n", words[i]);

/* 2 */

return;

}```

저는 위 코드를 다음과 같이 이해했습니다. 즉,

<tmp 포인터는 블록안에서 선언되었기 때문에 while문을 빠져나오면 words[n]의 각 첫바이트의 메모리 주소를 저장한 tmp안의 주소값은 생성과 소멸을 반복하다 마지막에 자동 소멸되나, 각각의 words[n]에 담긴 문자열은 소멸되지 않는다.

또한, 원하는 결과를 다 얻고 나서 calloc에 의해 생성된 메모리를 만일 소거하고 싶다면,

위 '2' 자리에

for(i=0 ; i<4 ; ++i) {

free(words[i]);

를 삽입하면 된다.>

위와 같이 해석하는 것이 맞는지 확인해 주시면 고맙겠습니다.

덧붙임> 좋은 강의 올려 주셔서 고맙습니다. 남은 파트도 열심히 잘 들을께요^^

c

답변 0

scanf("%d\n") 의미

0

12

1

[문제 해결]전화번호부 v1.0(1) 인덱스 관련하여 질문입니다. 강의를 아무리 돌려봐도 인덱스를 업데이트 안하네요.

0

53

2

music libaray

0

68

1

자료구조 1강, 코드, array --> tmp 할당, 방 4개에서 방 8개로 이사함 ㅅㅅ

0

98

1

자료구조 1강, 코드, array --> tmp 할당, 방 4개에서 방 8개로 이사함 ㅅㅅ

0

98

0

배열대신 포인터 arithmetic으로 써야하는 이유가 있을까요?

0

627

1

search_song함수의 ptr_snode = ptr_snode;의 의미가 궁금합니다

0

407

1

스택 구현

0

367

0

학습 자료 pdf 파일에 관해서

0

844

1

포인터 참조 질문

0

319

1

redefinition; different basic types 오류

2

1269

2

한글이 깨지는 경우 어떻게 해결하나요?

0

343

0

안녕하세요. c언어 독학중인 학생입니다.

0

554

1

search 함수의 선언 궁금증

0

283

1

두번째 예제 질문있습니다!

0

208

0

메모리 동적 할당에서 메모리공간을 확장시킬 때

1

392

0

realloc함수 쓰지 않는이유

0

262

0

안녕하세요 교수님. free()관련해서 질문 있습니다.

0

238

0

동적으로 할당된 메모리의 life time 관련하여 질문 있습니다.

0

276

0

Node에 대한 코드 안에 링크필드 선언할 때

3

209

0

stack 구현에서 동적할당중 형변환의 유무에 관한 질문

0

292

0

find함수가 제대로 작동을 안합니다

0

272

1

컴파일 실행 중에 오류가 났는데, 구글링으로도 해결방법을 모르겠어서 남깁니다.

0

236

0

21분23초 char **tmp1에서 캐스팅을 해주는 이유는 무엇인가요?

0

345

2