2중 포인터에서 malloc에 대한 질문....
글쓴이: spinel1 / 작성시간: 일, 2003/06/01 - 7:32오후
2차원 배열로 행렬을 만드는 건데요.
행렬의 크기가 동적으로 변해야 하거든요.
그래서 2중포인터로 잡고....
행과 열부분을 동적할당으로 하려고 하고 있거든요.
n*n 행렬을 만들 경우에는.... 아래처럼...
int **a, n;
scanf("%d", &n);
a=(int**)malloc(sizeof(int)*n*n);
이렇게 하는거 아닌가요?
그런데 결과가 안나오더라구요.
혹시 아시는 분 있음 답변 달아주시기 바랍니다.
아울러....
malloc 사용하지 않고 배열의 크기를 동적으로 받는 방법도 있나요??
scanf로 int형 변수 n에 정수를 입력받아서...
그 입력받은 정수 크기의 n*n형 배열을 만드는 방법이요.
불가능한것 같은데....
혹시 아시는 분은 가르쳐 주십시요.
Forums:
이중 포인터는a = (int **)malloc(4 * n);a[0
이중 포인터는
a = (int **)malloc(4 * n);
a[0~n-1] = (int *)malloc(4 * n);
이런식으로 쓰셔야 됩니다
그리고 배열은 텍스트 영역에 할당되는
const 포인터 형이라 크기 변경이 불가능합니다
동적인 공간인 heap은 malloc으로 할당, realloc등으로 변경이 가능하구요
[quote="goldrgon"]이중 포인터는a = (int **)m
sizeof 연산자를 쓰셔야죠.
malloc 한 번만 하는 초식도 있긴 합니다만...
sizeof연산자를 쓰라고 한 부분은의미가 모호한 딴지로 보여집니다
sizeof연산자를 쓰라고 한 부분은
의미가 모호한 딴지로 보여집니다
sizeof(int *)와 sizeof(int)를 섞어써야할 것 같네요
malloc한번만 사용해도 되는 초식을 좀 보고싶네요 ㅋ
난 세상의 떨거집니다
더 알 필요가 있겠습니까? 나에 대해서??
n*n 행렬이라고 꼭 복잡한 2중포인터를 쓸 필요까지야...그냥
n*n 행렬이라고 꼭 복잡한 2중포인터를 쓸 필요까지야...
그냥 int * a = (int *)malloc(sizeof(int) * n *n ) ;
이렇게 해서 a[i * n + j]; 형태로 사용하면 되지 않을까요..
from saibi
[quote]a[0~n-1] = (int *)malloc(sizeof(i
실제로 가능한 문법... 인가요?
처음봐서요..-_-a
실제로 가능한지 하지 않은지는이중 포인터와 메모리에 대한 이해가 있으
실제로 가능한지 하지 않은지는
이중 포인터와 메모리에 대한 이해가 있으면
충분하다고 봅니다
goldrgon님이 쓰신 문법은
for등을 사용해서
a[0~n-1] = (int *)malloc(sizeof(int) * n);
0 부터 n-1까지 돌리는거 아닌가요??
난 세상의 떨거집니다
더 알 필요가 있겠습니까? 나에 대해서??
[quote="new5244"]n*n 행렬이라고 꼭 복잡한 2중포인터를
훨씬 낫네요 ㅋㅋ
난 세상의 떨거집니다
더 알 필요가 있겠습니까? 나에 대해서??
근데 '탱탱'님이랑 'goldrgon'님은 같은분 아닙니까?스레드와
근데 '탱탱'님이랑 'goldrgon'님은 같은분 아닙니까?
스레드와 관련없는 글이긴 합니다만..;;
걸렸네요;;관련없는 글이긴 하지만
걸렸네요;;
관련없는 글이긴 하지만
난 세상의 떨거집니다
더 알 필요가 있겠습니까? 나에 대해서??
댓글 달기