책 내용 질문하기
변수의 주소 구하기, 포인터 변수, 함수 포인터
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
78,81,95
조회수
162
작성일
2019-09-25
작성자
탈퇴*원
첨부파일

p. 78

 

예제에서는 b=&a;

정수형 변수 a의 주소를 포인터 변수b 에 기억시킨다.

 

p. 81

p=a

배열명 a는 배열의 주소이므로 포인터 변수p에는 배열a의 시작 위치가 기억된다. 배열의 이름은 주소이므로 'p=&a'처럼 입력하지 않도록 주의해야 한다.

 

p. 95

예제5

pf=a

add함수의 시작 주소를 함수포인터 pf에 저장한다.

 

라고 되어있는데요.

&를 붙이고 안붙이고의 차이를 알고 싶습니다.  

답변
2019-09-25 15:58:38

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

 

우측 변에 나오는 변수명이 주소를 담고 있는 경우에만 &를 붙이지 않습니다.

만약 값을 지니고 있다면 &를 붙여야 하죠.

 

배열의 경우 배열'명'은 배열의 시작주소를 담고 있습니다.

a[5]라는 배열을 선언했다면, a는 배열의 시작주소인 &a[0]과 값이 같죠.

 

95쪽의 경우는 선언 부터 pf라는 변수가 함수를 담고 있는 포인터임을 알려주고 있습니다.(선언시 사용된 *기호)

 

행복한 하루되세요 :)

  • 관리자
    2019-09-25 15:58:38

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

     

    우측 변에 나오는 변수명이 주소를 담고 있는 경우에만 &를 붙이지 않습니다.

    만약 값을 지니고 있다면 &를 붙여야 하죠.

     

    배열의 경우 배열'명'은 배열의 시작주소를 담고 있습니다.

    a[5]라는 배열을 선언했다면, a는 배열의 시작주소인 &a[0]과 값이 같죠.

     

    95쪽의 경우는 선언 부터 pf라는 변수가 함수를 담고 있는 포인터임을 알려주고 있습니다.(선언시 사용된 *기호)

     

    행복한 하루되세요 :)

  • 관리자
    2019-09-26 09:40:54

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

     

    배열의 배열명이 주소를 뜻하듯,

    함수의 함수명 또한 함수의 로직(중괄호{} 내의 코드들)이 저장된 메모리의 주소를 가리키고 있습니다. 

     

    배열과 동일하게 보면 쉽게 이해할 수 있습니다.

     

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

    int *b;

     

    b=a;

     

    int a(int i, int j) { ~~~ }

    int (*b)(int, int);

    b=a;

     

    함수에서 다른 점은 함수의 포인터를 받으려는 변수(b)의 인수가 반드시 함수와 동일하게 정의되어야 한다는 점입니다. (변수명 없이 자료형과 개수가 동일하게) 

     

    행복한 하루되세요 :)

  • *
    2019-09-25 16:26:24

    p. 95에서

     

    *pf 는 함수포인트를 선언해주는 것이지

    우측 변수명인 add가 주소를 담고 있다는 뜻이 아니지 않나요???
     

    add앞에는 &가 왜 안 붙은거죠? 

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