C언어 배열을 동적할당 할때...
조회수 375회
#include <stdio.h>
int main()
{
int * arr1 = (int *)malloc(sizeof(int) * 6);
int * arr2 = (int *)malloc(sizeof(int) * 6);
int * arr3 = (int *)malloc(sizeof(int) * 6);
arr1[3][2] = {
{3, 4},
{5, 2},
{1, 2},
};
arr2[3][2] = {
{1, 2},
{7, 9},
{3, 5}
};
for (int i = 0; i < 3; i++)
for (int j = 0; j < 2; j++)
arr3[i][j] = arr1[i][j] * arr2[i][j];
for (int i = 0; i < 3; i++)
printf("%d %d\n", arr3[i][0], arr3[i][1]);
free(arr1);
free(arr2);
free(arr3);
return 0;
}
저렇게 동적 할당하고 배열 선언하는거 맞나요..? 배열 들어간 모든 줄에 subscripted value is neither array nor pointer nor vector 이런 오류가 뜨는데...
1 답변
-
여러 방법이 혼합되어 사용되어 있네요
arr3[i][j]
처럼 사용하시고 싶으시다면 arr3[0], arr3[1]에 arr3[0][0]에 대한 포인터, arr3[1][0]에 대한 포인터가 있어야 하며
int * arr1 = (int *)malloc(sizeof(int) * 6)
처럼 사용하시고 싶으시다면 arr1[0] = 3; arr1[1] = 4; 등의 방법으로 사용해주셔야 합니다.
추가적으로 프로그램은 사용자가 어떤 배열의 크기를 사용하고 있는지 모르기 때문에 {{3, 4}, {...}} 등의 방법으로 배열을 초기화 하는 방법은 불가능합니다.
추가적으로 arr1[3][2]부분에서 마지막 {1, 2} 이후 쉼표가 들어가 있습니다.
댓글 입력