C공부하던 도중에 동적할당 궁금해서 찾아봤거든?
시키는데로 했는데 왜 안되지?ㅠㅠㅠㅠㅠ
가르쳐줘 형들..ㅠㅠ
밑에는 그냥 혼자 만들어 본 건데
동적할당 저래 하는거 아닌가??
ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
#include <stdio.h>
#include <stdlib.h>
void main()
{
int **arr;
int i,j,k;
printf("% n x n 행렬의 n 입력");
scanf("%d",&k);
arr=(int**)malloc(sizeof(int)*k);
for(i=0;i<k;i++)
arr[i]=(int*)malloc(sizeof(int)*k);
for(i=0;i<k;i++)
for(j=0;j<k;j++)
arr[i][j]=i+j;
for(i=0;i<k;i++)
for(j=0;j<k;j++)
printf("%d ", arr[i][j]);
for(i=0;i<k;i++)
free(arr[i]);
free(arr);
}
아니다 %지우니까 되네 ㅠㅠ 역시 글올리면 자동해결이 되네 아 ㄳㄳ
근데 궁금한게 있다면
열혈강의 C 지금 20장 끝나고 21-28 남았는데
아 자꾸 왜 엔터쳐져
아 어쨋든 C끝나고 나면 뭐하지? 좀더 어려운 C를 해봐야되나 ㅠㅠ C++로 넘어가야됨?? 다음학기 객체지향 수업들을라하는데.. 참고로 전자과...
arr=(int**)malloc(sizeof(int)*k); --> sizeof(int) 이걸 sizeof(int*) 로 바꿔야 맞다. 운좋게 크기가 갖아서 잘 돌아갔겠지만.
갖아서 -> 같아서
ㄴ 아아 ㄳㄳ 근데 int 사이즈 인데 왜 int*사이즈로 하는 이유가 있음요??
arr 은 int* 타입을 k개 만큼 할당하는 거잖아. arr[i] 는 int 타입을 k개 만큼 할당하는 거고. int* 타입을 할당하는데 int* 사이즈로 해야지 int 사이즈가 아니라
이거 금방 이해가 되지 않으면 아직 포인터에 대해 잘 모른다는거다.
ㄴ 아 ㄳㄳ 생각해보니 int형이여서 크기가 4이고 포인터 크기가 4여서 우연히 맞았다는 거구나 ㄳㄳㄳ
ㄴ 역시 프로그램 잘하는 사람들은 존경스러움