책 내용 질문하기
질문입니다.
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
80,86
조회수
737
작성일
2019-03-21
작성자
탈퇴*원
첨부파일
80p 예제 2번에서 p=a가 배열의이름이므로 포인터변수주소 줄 때 p=&a처럼 안한다고했는데요, 왜 86p 문제 2번은 포인터변수주소를 줄 때 p= &a[2] 이처럼 &를 주나요. 86p 1번문제에서 str = korea 여기서는 배열이아닌데 왜 &를 안써주나요?
답변
2019-03-22 10:37:33

안녕하세요 길벗수험서 운영팀입니다.

 

[80]

배열에서 배열이름은 해당 배열의 시작 주소를 의미합니다.

int a[10];

if (*a==a[0]) printf("true');

else printf("false");

위와 같은 코드를 출력하면 true가 찍히게 됩니다.

 

즉 예제2와 같이 a[5]라는 배열이 선언되었을 때, 

a라는 것은 a[5]의 시작값인 a[0]의 주소인 &a[0]이 되는 것이죠.

 

이제 다시 보죠. 배열의 주소를 통채로 넘길 때는 배열의 시작주소만 넘겨주면 됩니다.

int *a, b[10];

a=b;

이 때 포인터 변수 a는 배열 b와 동일하게 사용할 수 있게 됩니다. a[3]과 같이 말이죠.

 

배열에 저장된 값들 중 하나의 값에 대한 주소를 넘기고 싶다면 해당 값을 표현하여 &를 붙여줍니다.

int *a, b[10] = { 0,1,2,3,4,5,6,7,8,9};

a=&b[4];

이 때 포인터 변수 a는 b[4]의 주소를 갖게 됩니다. *a를 출력하게 되면 4가 출력되겠죠.

 

배열과 포인터 관련해서는 이후 예상문제은행을 통해 계속 언급되면 해설을 통해 설명합니다.(113p 이후)

해당 예제들과 함께 학습하시는 것이 이해에 좀 더 도움이 될 것입니다.

 

 

[86]

앞에서 문자열을 처리할 때 어떻게 했는지 떠올려보세요.

char a[]= "abcdef";

위와 같이 처리했었죠. 이를 응용한 방법입니다.

 

char str[] = "KOREA"; 

위의 변형이 아래의 코드라고 할 수 있습니다.

 

char *str;

str = "KOREA";

포인터 변수로 선언하였지만 이후 문자열을 배정함으로써 문자 배열과 같이 사용할 수 있게됩니다.

좀더 설명하자면 char *str은 문자형 포인터 변수 str에 "KOREA" 문자열이 저장된 곳의 시작 주소("K"가 저장된 주소)가 저장된 것이 됩니다. 

 

행복한 하루되세요 :)

  • 관리자
    2019-03-22 10:37:33

    안녕하세요 길벗수험서 운영팀입니다.

     

    [80]

    배열에서 배열이름은 해당 배열의 시작 주소를 의미합니다.

    int a[10];

    if (*a==a[0]) printf("true');

    else printf("false");

    위와 같은 코드를 출력하면 true가 찍히게 됩니다.

     

    즉 예제2와 같이 a[5]라는 배열이 선언되었을 때, 

    a라는 것은 a[5]의 시작값인 a[0]의 주소인 &a[0]이 되는 것이죠.

     

    이제 다시 보죠. 배열의 주소를 통채로 넘길 때는 배열의 시작주소만 넘겨주면 됩니다.

    int *a, b[10];

    a=b;

    이 때 포인터 변수 a는 배열 b와 동일하게 사용할 수 있게 됩니다. a[3]과 같이 말이죠.

     

    배열에 저장된 값들 중 하나의 값에 대한 주소를 넘기고 싶다면 해당 값을 표현하여 &를 붙여줍니다.

    int *a, b[10] = { 0,1,2,3,4,5,6,7,8,9};

    a=&b[4];

    이 때 포인터 변수 a는 b[4]의 주소를 갖게 됩니다. *a를 출력하게 되면 4가 출력되겠죠.

     

    배열과 포인터 관련해서는 이후 예상문제은행을 통해 계속 언급되면 해설을 통해 설명합니다.(113p 이후)

    해당 예제들과 함께 학습하시는 것이 이해에 좀 더 도움이 될 것입니다.

     

     

    [86]

    앞에서 문자열을 처리할 때 어떻게 했는지 떠올려보세요.

    char a[]= "abcdef";

    위와 같이 처리했었죠. 이를 응용한 방법입니다.

     

    char str[] = "KOREA"; 

    위의 변형이 아래의 코드라고 할 수 있습니다.

     

    char *str;

    str = "KOREA";

    포인터 변수로 선언하였지만 이후 문자열을 배정함으로써 문자 배열과 같이 사용할 수 있게됩니다.

    좀더 설명하자면 char *str은 문자형 포인터 변수 str에 "KOREA" 문자열이 저장된 곳의 시작 주소("K"가 저장된 주소)가 저장된 것이 됩니다. 

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.