C언어 배열정의 질문입니다
바나나맛사탕
질문 제목 : C언어 배열정의 질문입니다질문 요약 :배열인덱스 정의에서경고가 나요
warning C4789질문 내용 : 3X3행렬 두개를 곱하는 함수를 작성해보았는데요
컴파일을 하면 [warning C4789]경고가 납니다 ㅜㅜ
검색해보니 [warning C4789]는 없는 배열요소에 연산할 경우 뜨는 거라고 하더라구요....arr[3]={1,2,3}으로 정했을때 arr는 arr[0]부터 시작한다고 알고 있습니다
즉,arr[0]=1, arr[1]=2, arr[2]=3
함수에서 for문을 할때 맞춰 한것 같은데 왜 메모리가 작다고 나오는건지요...ㅜㅜ
#includestdio.h
void ShowArr2DStyle(int arr[][3],int row)
{
int i,j;
for(i=0;irow;i++)
{
for(j=0;jrow;j++)
printf(%d , arr[i][j]);
printf(\n);
}
printf(\n);
}
int mul(int (*arr1)[3],int (*arr2)[3],int (*arr3)[3],int row)
{
int i,j,k=0;
for(i=0;irow;i++)
{
for(j=0;jrow;j++)
{
for(k=0;krow;k++)
{
arr3[i][j]+=arr1[i][k]*arr2[k][j];
}
}
}
return 0;
}
int main(void)
{
int arr1[3][3]={1,2,3,4,5,6,7,8,9};
int arr2[3][3]={9,8,7,6,5,4,3,2,1};
int arr3[3][3]={0,0,0,0,0,0,0,0,0};
arr3[3][3]=mul(arr1,arr2,arr3,sizeof(arr1)/sizeof(arr1[0]));
ShowArr2DStyle(arr3,sizeof(arr3)/sizeof(arr3[0]));
return 0;
}