C++ Primer 5판 2.3.2 섹션 연습
2280 단어 C++Primer 학습
프로그램 연습
연습 2.19: 지침과 인용의 주요 차이를 설명한다.
답:사실 P49쪽은 잘했어요.
바늘 인용은 다른 대상에 대한 간접적인 접근을 제공할 수 있습니다.지침 자체는 하나의 대상이고 인용 자체는 하나의 대상이 아니다.인용이 일단 귀속되면 그 귀속치가 생공사할 수밖에 없고 특히 한결같다.이 인용을 사용할 때마다 처음 연결된 대상에 접근합니다.
지침과 그것이 저장된 주소 사이에는 이런 제한이 없다.다른 변수와 마찬가지로, 바늘에 값을 부여하는 것은 새 주소를 저장해서 새로운 대상을 가리키는 것이다.
특히 int*p = & i 주의;std::cout<*p
연습2.20: 다음 코드의 작용을 서술해 주세요.
int i = 42;
int*p1 = &i;
*p1= *p1 * *p1;
답: 무섭게 보이지만 실제로는 잘 이해된다. *p1은 간접 방문 i이고, p1에 저장된 것은 i의 주소이기 때문에 실제로는 바늘p1을 통해 i의 값을 간접적으로 수정했다. i의 값이 42로 바뀌었다.×42, 검증 절차는 연습 2.20.cpp
연습 2.21: 다음 정의를 설명해 주세요.이 정의들 중에 불법이 있습니까?하면, 만약, 만약...
intj = 0;
(a)double *dp = &j; (b)int *ip = j; (c)int *p = &j;
답: (a) 불법, 전후 유형 불일치
(b) 불법, 포인터 저장은 대상 자체가 아닌 대상의 주소이다
(c) 적법
연습 2.22: p가 int형 지침이라고 가정하면 다음 코드의 의미를 설명하십시오
If(p)//..//만약 p가 저장한 주소가 비어 있지 않다면, 즉 p가 저장한 주소가 존재하고, 조건은 진실이며, 아래로 실행된다
If(*p)//...//만약 p가 가리키는 int형 대상의 값이 0과 같지 않으면 조건이 진짜이고 아래로 실행됩니다.
연습2.23: 지침p를 주면 합법적인 대상을 가리키는지 알 수 있습니까?가능하다면 판단의 방향을 서술한다.만약 안 된다면, 원인도 설명해 주세요.
답: 바늘p가 합법적인 대상을 가리키는지 판단할 수 없다. 바늘p가 초기화되지 않으면 p가 임의의 주소로 저장된다. 이것은 매우 위험한 일이다. 게다가 p가 합법적으로 초기화되지 않으면 악의적으로 주소를 저장하는 것도 위험하다.따라서 프로그래머 스스로 지침이 합법적으로 사용되는지 확인해야 한다.
연습 2.24 아래 코드에서 왜 p가 합법적이고 lp가 불법인지/
int i = 42; void *p = &i; long *lp =&I;
답:void*는 특수한 바늘 형식으로 임의의 대상의 주소를 저장할 수 있습니다.세 번째는 두 가지 유형이 다르기 때문에 당연히 오류를 보고하고 부치와 다르기 때문에 지침은 두 가지 유형이 엄격하게 일치하도록 요구한다(특례가 있고 47페이지는 다른 장절이 소개할 것이라고 한다)
연습
#include
using namespace std;
int main()
{
int a = 5;
int b = 10;
cout << "a = " << a << " b = " << b << endl;// a b
int *p = &a;
cout << "*p = " << *p << endl; //p a
*p = *p + 1;
cout << "a = " << a << endl; // a 1
p = &b;
cout << "*p = " << *p <
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C++Primer 5판 3.3.3 절 연습연습 3.16: 연습 3.13에서vector 대상의 용량과 구체적인 내용을 출력하는 프로그램을 작성한다.이전의 대답이 정확했는지 확인하고, 만약 틀렸다면, 3.3.1절 (87페이지) 을 돌이켜서 어디가 틀렸는지 알 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.