c++언어 삼중 포인터를 쓸때 2차원 배열내용을 접근하는 방법좀 질문이요..
글쓴이: ytkim4558 / 작성시간: 화, 2011/07/19 - 11:29오전
함수를 통해서 반환할려고 하는데요 가령
double ** a(int b) { double **result; result = (double **)calloc(30,sizeof(double*)); for (int i=0; i<30;i++) { result[i] = (double*)calloc(50,sizeof(double)); } ........ return result; } int main() { int value = 3; double ***b; b= (double ***)calloc(30, sizeof(double**)); for (int i=0; i<30; i++) { b[i] = (double **)calloc(50 , sizeof(double*)); for (int j=0; j<50; j++) { b[i][j] = (double *)calloc(3,sizeof(double)); } } for (int i=0; i<3; i++) b[i] = a(value) ; // < ---------------------------------(질문의 핵심 부분입니다) }
요런식으로 이용한다고 할때요
b가 행렬로 따지면 b[30][50][3] 을 동적 할당해서 저렇게 선언한다고 치면
[30][50] 행렬을 한번에 b 행렬에 3번씩 담을려고 하면 어케 접근해야하죠? 저런식으로 접근하는게 맞는건가요?
Forums:
double ** a(int b) {
double ** a(int b)
{
double **result;
result = (double **)calloc(30,sizeof(double*));
for (int i=0; i<30;i++)
{
result[i] = (double*)calloc(50,sizeof(double));
}
........
return result;
}
int main()
{
int value = 3;
double ***b;
b= (double ***)calloc(3, sizeof(double**));
for (int i=0; i<3; i++)
b[i] = a(value) ;
}
??
double ** a(int b) {
double ** a(int b)
{
double **result;
result = (double **)calloc(50,sizeof(double*));
for (int i=0; i<30;i++)
{
result[i] = (double*)calloc(3,sizeof(double));
}
return result;
}
int main()
{
int value = 3;
double ***b;
b= (double ***)calloc(30, sizeof(double**));
/*
for (int i=0; i<30; i++)
{
b[i] = (double **)calloc(50 , sizeof(double*));
for (int j=0; j<50; j++)
{
b[i][j] = (double *)calloc(3,sizeof(double));
}
}
*/
for (int i=0; i<30; i++)
b[i] = a(value) ; // < ---------------------------------(질문의 핵심 부분입니다)
}
댓글 달기