오류가 나는 이유..?
키클
질문 제목 : 오류가 나는 이유??Ap = (int*)A;
Bp = (int*)B;
Cp = (int*)C;
질문 내용 :
/*행렬 합
4Ⅹ4 행렬 A, B에 무작위로 100이하의 숫자를 대입한다.
배열의 인덱스를 사용하지 않고 포인터를 이용하여 행렬 합을 구한다.
A, B의 행렬 값과 행렬의 합을 출력한다.
*/
#include stdio.h
#include time.h
int main(void)
{
int A[4][4]={0,}, B[4][4]={0,}, C[4][4]={0,};//2차원 행렬 0으로 초기화
int *Ap,*Bp,*Cp,i=0,j=0;
srand((unsigned)time(NULL));
for(i=0;i4;i++)
{
for(j=0;j4;j++)
{
A[i][j] = rand()%101; // 100이하 랜덤 숫자 생성
B[i][j] = rand()%101; // 100이하 랜덤 숫자 생성
}
}
Ap = (int*)A;//여기 이부분 없으면 왜 오류가 나는건가요!?!?!
Bp = (int*)B; //여기 이부분 없으면 왜 오류가 나는건가요!?!?!
Cp = (int*)C; //여기 이부분 없으면 왜 오류가 나는건가요!?!?!
for(i=0;i16;i++,Ap++,Bp++,Cp++)
*Cp = *Ap + *Bp;
Ap = (int*)A; //여기 이부분 없으면 왜 오류가 나는건가요!?!?!
Bp = (int*)B; //여기 이부분 없으면 왜 오류가 나는건가요!?!?!
Cp = (int*)C; //여기 이부분 없으면 왜 오류가 나는건가요!?!?!printf(Matrix A = );
for(i=0;i16;i++,Ap++)
{
if(i%4 == 0) printf(\n);
printf(%5d,*Ap);
}
printf(\n\nMatrix B = );
for(i=0;i16;i++,Bp++)
{
if(i%4 == 0) printf(\n);
printf(%5d,*Bp);
}
printf(\n\nMatrix A + B = );
for(i=0;i16;i++,Cp++)
{
if(i%4 == 0) printf(\n);
printf(%5d,*Cp);
}
return 0;
}
-
지후 2024-02-25
그리고, srand(), rand() 를 쓰기 위해서는 stdlib.h 헤더 파일이 필요 합니다
-
해찬솔 2024-02-25
(첫부분)각 배열 원소의 합이나 출력 부분에서 포인터 변수를 쓰는데.. 만약 질문하신 부분이 없다면, 인트형 포인터 변수만 선언(Ap, Bp, Cp)만 해놓고 아무것도 가르키고 있지 않는 빈 포인터 변수로 연산을 하는것과 같으니깐 오류를 내는것 같아요.
(두번째 부분)포인터로 증가 연사자를 써서 주소값이 달라졌거든요. 그래서 다시 초기화 해준겁니다.