c언어/ 2차원 배열 함수에서 사용/ 코드 실행중 예외 발생을 해결하고 싶습니다.

조회수 570회
#include<stdio.h>

void calc(int(*pjumsu[3]), int* ptotal);

main()
{
    int jumsu[100][3];
    int total[3] = { 0, };
    int(*pjumsu)[3];

    pjumsu = jumsu;

    calc(pjumsu, total);

    printf("국어 총점: %d\n", total[0]);
    printf("영어 총점: %d\n", total[1]);
    printf("수학 총점: %d\n", total[2]);
}

void calc(int(*pjumsu[3]), int* ptotal)
{
    int i;

    for (i = 0; i < 100; i++)
    {
        pjumsu[i][0] = 91; // 여기서 자꾸 예외 발생이 뜨는데 어디서 문제가 생긴건가요?
        pjumsu[i][1] = 90;
        pjumsu[i][2] = 95;
    }

    for (i = 0; i < 100; i++)
    {
        ptotal[0] += pjumsu[i][0];
        ptotal[1] += pjumsu[i][1];
        ptotal[2] += pjumsu[i][2];
    }
}

2차원 배열을 함수에서 사용하기에 관한 예제를 풀던 중, 예제와 똑같이 입력하였지만 예외가 발생헤, 예외 발생 이유가 뭔지 알고싶고, 이를 해결하고싶습니다.

#include<stdio.h>



void calc(int(*pjumsu[3]), int* ptotal);



main()

{
    int jumsu[100][3];

    int total[3] = { 0, };

    calc(jumsu, total);

    printf("국어 총점: %d\n", total[0]);

    printf("영어 총점: %d\n", total[1]);

    printf("수학 총점: %d\n", total[2]);



}

void calc(int(*pjumsu[3]), int* ptotal)
{
    int i;



    for (i = 0; i < 100; i++)

    {
        pjumsu[i][0] = 91;

        pjumsu[i][1] = 90;

        pjumsu[i][2] = 95;

    }

    for (i = 0; i < 100; i++)

    {
        ptotal[0] += pjumsu[i][0];

        ptotal[1] += pjumsu[i][1];

        ptotal[2] += pjumsu[i][2];

    }

}

이후 이렇게도 수정해 보았지만 코드 실행기에서는 signal: segmentation fault (core dumped), visual stdio에서는 예외가 떴습니다.

  • 2차 배열 매개 변수 전달을 검색해서 찾아보세요. 예제 많이 나오는 데 전달 과정에서 잘못 써서 그럴 수 있습니다. 알 수 없는 사용자 2019.8.30 17:08

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)