책 내용 질문하기
포인터 질문
도서
2024 시나공 정보처리기사 실기 기본서
페이지
176
조회수
187
작성일
2024-08-04
작성자
김*현
첨부파일

문제1에서


p->name의 값은 "Lee"라고 되어있는데


여기서 p는 a[1]의 주소 값 즉, &a[1]이니까 a[1].name의 주소 값인 &a[1].name이 아닌가요?


int a[] = {1,2,3,4}

int* b = a;

printf("%d", b);


이때는 b는 a의 주소값을 의미하는게 맞는데 구조체에서는 달라지는건가요??

답변
2024-08-04 18:29:48

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

배열이 자료의 형과 크기가 동일한 변수의 모임이라면

구조체는 자료의 종류가 다른 변수의 모임입니다.

해당 문제에서 insa라는 자료형을 만들고 insa라는 자료형으로 name[10] 배열과 age변수를 만든것입니다.

회원님께서 작성해주신 아래의 코드의 경우

int a[] = {1,2,3,4}

int* b = a;

a는 배열명이기 때문에 배열의 시작위치의 주소가 b에 저장됩니다.


질문하신 문제에서 아래의 코드의 경우

p = a;

a가 배열명이기 때문에 배열의 시작위치의 주소를 p에 저장이 됩니다.

해당 문제 해설에도 써있듯 a배열의 시작위치인 1000번지가 p에 저장이 되는것입니다



p++ 를 만나면 p의 값이 1증가가 되는데 주소값에 1을 더하는것은 다음 자료를 가르키는 것이고

다음 자료의 주소가 1014번지이니 1014번지가 p에 저장이 되는것입니다


1014번지를 찾아가면 멤버 name이 있고, 멤버 age가 있는데

아래의 출력문에 의해 lee, 38 이 출력되는 것입니다

printf("%s\n", p->name);

printf("%d\n", p->age);

행복한 하루되세요 :)

  • 관리자
    2024-08-04 18:29:48

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

    배열이 자료의 형과 크기가 동일한 변수의 모임이라면

    구조체는 자료의 종류가 다른 변수의 모임입니다.

    해당 문제에서 insa라는 자료형을 만들고 insa라는 자료형으로 name[10] 배열과 age변수를 만든것입니다.

    회원님께서 작성해주신 아래의 코드의 경우

    int a[] = {1,2,3,4}

    int* b = a;

    a는 배열명이기 때문에 배열의 시작위치의 주소가 b에 저장됩니다.


    질문하신 문제에서 아래의 코드의 경우

    p = a;

    a가 배열명이기 때문에 배열의 시작위치의 주소를 p에 저장이 됩니다.

    해당 문제 해설에도 써있듯 a배열의 시작위치인 1000번지가 p에 저장이 되는것입니다



    p++ 를 만나면 p의 값이 1증가가 되는데 주소값에 1을 더하는것은 다음 자료를 가르키는 것이고

    다음 자료의 주소가 1014번지이니 1014번지가 p에 저장이 되는것입니다


    1014번지를 찾아가면 멤버 name이 있고, 멤버 age가 있는데

    아래의 출력문에 의해 lee, 38 이 출력되는 것입니다

    printf("%s\n", p->name);

    printf("%d\n", p->age);

    행복한 하루되세요 :)

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