반응형
문제
앞의 예제를 보지 말고 빈칸을 채워보자. 포인터 변수를 어떻게 정의하면 아래와 같은 결과가 나올까?
float f1 = 10.0f;
float f2 = 20.0f;
[ ] p = &f1;
p = &f2; // OK
*p = 30.0f; // FAIL
예제소스
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
using namespace std; | |
int main() { | |
float f1 = 10.0f; | |
float f2 = 20.0f; | |
const float* p = &f1; | |
p = &f2; // OK | |
*p = 30.0f; // FAIL | |
return 0; | |
} |
설명
포인터 변수에 주석으로 FAIL을 해놓았다. 그러므로 float* p = &f1;이 아닌 const float* p = &f1;이 되는 것이다. 포인터 자체에 상수값을 씌운 것이다.
이렇게 하면 비주얼스튜디오에서 *p에만 오류표시가 나온다.
상수라서 30.0f로 초기화되지 않는 것이다.
문제 출처
뇌를 자극하는 C++ 프로그래밍 11장 포인터-정보에 대한 정보 pp.254 Exercise 11-2
반응형
'공부 > 문제답안' 카테고리의 다른 글
[두들낙서] 문자열을 매개변수로 받아 그 문자열에서 공백을 제거하여 출력하는 함수 작성 예제 (0) | 2016.10.22 |
---|---|
[두들낙서] 정수 하나를 매개변수로 받아 그 수가 짝수이면 0, 홀수이면 1을 반환하는 함수 예제 (0) | 2016.10.22 |
포인터 변수를 가리키는 포인터 변수 답안 (0) | 2016.10.09 |
C언어 포인트 이해 void 포인터 변수의 크기 답안 (0) | 2016.10.09 |
구조제 변수의 덧셈 답안 (0) | 2016.10.03 |