편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2020.09.08

    [ C ] 다중포인터 질문이요! 쉬우시겠지만 이해가 안가서요. Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT)


    #include <stdio.h>
    
    int main() {
    
        char* astrList[3] = {"Hello", "World", "String"};
        char* *ppstrList = astrList;
        char** *pppstrList = &ppstrList;
    
        puts(*pppstrList[0]);
        puts(pppstrList[2][0]);
    
        return 0;
    }
    

    혼자 c를 공부하고 있어요.. 마지막 puts()에서 Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT) 에러가 났는데 이유를 모르겠어서요..

    책을 보고 하고 있는데 예제에서

    puts(* (*(pppstrList + 2) + 0 ) );
    

    라고 나와있는걸 이렇게 바꿔봐도 되나.. 해서 해본거였어요. 왜(?) 이런 에러가 뜨는걸까요?

    -> 연산결과는 char* 일꺼구.. 그럼 puts()로 해도 문자열이 잘 나와야 할껀데...

  • 프로필 알 수 없는 사용자님의 편집
    날짜2020.09.07

    [ C ] 다중포인터 질문이요! 쉬우시겠지만 이해가 안가서요..ㅠㅠ Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT)


    #include <stdio.h>
    
    int main() {
    
        char* astrList[3] = {"Hello", "World", "String"};
        char* *ppstrList = astrList;
        char** *pppstrList = &ppstrList;
    
        puts(*pppstrList[0]);
        puts(pppstrList[2][0]);
    
        return 0;
    }
    

    혼자 c를 공부하고 있어요.. 마지막 puts()에서 Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT) 에러가 났는데 이유를 모르겠어서요..

    책을 보고 하고 있는데 예제에서

    puts(* (*(pppstrList + 2) + 0 ) );
    

    라고 나와있는걸 이렇게 바꿔봐도 되나.. 해서 해본거였어요.. 왜??이런 에러가 뜨는걸까요??

    -> 연산결과는 char* 일꺼구.. 그럼 puts()로 해도 문자열이 잘 나와야 할껀데...ㅠㅠ