[완료]2차원 배열 malloc 문제입니다 ㅠ

qmxmp의 이미지

안녕하세요~ 복학생입니다..
복학하고선 c언어를 다시 공부하고 있는데 너무나도 새롭네요 ㅠ

오랜만에 c를 잡으니 너무 나도 어려운게 많네요 ㅋ

그러다가 2차원 배열 선언을 malloc으로 하려는데 궁금하네요.

	printf("size of arry");
	scanf("%d",&size);
 
	char **arry;
	arry = (char **)malloc(sizeof(char*)*size);
//	arry = (char **)malloc(sizeof(char)*size);
		for (int i=0; i<size; ++i)
	arry[i] = (char *)malloc(sizeof(char)*size);

아래 글 뒤지다가 이런 코드가 나왔는데요

저기 // 처리된 줄이랑 그 바로 윗줄이랑 틀린점이 (char*) 이랑 (char) 이고요.

제생각엔 // 처리된 줄이 맞는것 같은데 어떤 고수님께서 주신 글로는 그 위에 코드네요 ㅠㅠ

차이점이 제머리로는 계산이 안되서... 도움 주실분 있나요??

planetarium의 이미지

코드를 올리실땐 < code > 와 < /code > 로 둘러싸주세요.
질문을 올렸을땐 잘 올라갔는지 한번 확인해보는게 예의가 아닐까 싶네요...

qmxmp의 이미지


여기 게시판에 글을 처음 올려서 ㅠ < code > 사용법을 아예 몰랐네요~

planetarium의 이미지

위 소스에서
arry[0], arry[1] ... arry[size-1] 각각은 char*(char형 포인터)입니다.
for문을 통해서 각각의 포인터에 malloc으로 size개의 char를 위한 공간을 할당해주고 있구요.

다시 말해서
arry : char형 포인터들에 대한 포인터
arry[ ] : char형 포인터
arry[ ][ ] : char

다시 말하면
size개의 char가 아니라
size개의 포인터들을 위한 공간을 할당하는 것이기 때문에 저러한 코드가 나옵니다.

잘 생각해 보세요...

qmxmp의 이미지

댓글 감사드립니다.

저도 어서 내공을 올려서 게시판에서 답글 달아줄수 있는 날이 왔으면 좋겠네요 ^^