const 포인터 사용법 요약
1.const 한정자
const 한정자는 하나의 대상을 상변수로 변환할 수 있으며, 상량은 정의된 후에 수정될 수 없기 때문에 정의할 때 반드시 초기화됩니다.const int bufSize = 512;//OK
bufSize = 0;//error,bufSize
const int i;//error,
2. const 및 포인터
2.1 상수를 가리키는 바늘 변수
일반 형식:
const 형식 이름 * 바늘 변수 이름;const int * p1;//
설명:
const는 p1 바늘이 가리키는 대상을 한정하고 바늘 p 자체를 한정하지 않습니다.정의할 때 초기화하지 않고 다른 const 대상을 가리키는 값을 다시 부여할 수 있지만 p를 통해 가리키는 대상의 값을 변경할 수 없습니다
예:const int a = 10;//a ,
const int b = 15;
const int *p1;
p1 = &a;//ok
*p1= 20;//error, p1 a
p1 = &b;//ok,
*p1= 20;//error, p1 b
분석:
본질적으로 p1이 가리키는 대상이const인지 아닌지를 구분할 방법이 없기 때문에 시스템은 그것이 가리키는 모든 대상을const로 간주합니다.그래서const 대상을 가리키는 바늘도 비const 대상을 가리킬 수 있다.
예:int c = 15;// const
p1 = &c;//ok, const
*p1 = 20;//error
요약:
정의할 때 초기화되지 않을 수 있습니다. const 대상을 가리키는 바늘을 통해 값을 수정하려는 모든 행위는 컴파일 오류를 초래할 수 있습니다.바늘 자체의 값은 바뀔 수 있다. 이렇게 하면 바늘 변수 p1은 서로 다른 주소를 가리키고 이를 인용하는 작업을 하면 서로 다른 값을 얻을 수 있다.
실제 프로그램에서 const를 가리키는 바늘은 함수의 인삼으로 자주 사용된다.인삼을 const를 가리키는 지침으로 정의하여 함수에 전달되는 실제 대상이 함수에서 인삼 때문에 수정되지 않도록 합니다.
2.1.1 계속 분석
(1)const 대상의 주소를 일반적이고 비const 대상의 지침에 부여하면 컴파일할 때 오류가 발생합니다
예:const int val = 15;//const
void *ptr2 = &val;//error,iconst nt * int *
const void *ptr3 = &val;
(2)void* 포인터를 사용하여const 대상의 주소를 저장할 수 없으며,const void* 형식의 포인터를 사용하여const 대상의 주소를 저장해야 합니다
예:const int val = 15;//const
void *ptr2 = &val;//error,iconst nt * int *
const void *ptr3 = &val;
2.2 일반 포인터(const 포인터)
이런 바늘 변수를 상시 바늘 변수라고 하는데, 약칭 상시 바늘이라고 하는데, 즉 바늘 값은 바꿀 수 없다.
일반 형식:
형식 이름 * const 포인터 변수 이름;const int *p;
설명:
const는 포인터 변수를 한정합니다. const 포인터 변수에 값을 부여하려는 모든 행위는 컴파일 오류를 초래할 수 있습니다. 이 포인터를 통해 가리키는 대상의 값을 수정할 수 있는지 여부는 대상 자체에 달려 있습니다.
예:int a = 12,b = 15;
int * const p = &a;//
p = &b; //error, p
*p = 20; //ok,
요약:
포인터 변수의 지향은 변하지 않는다.
2.3 상수를 가리키는 상시 바늘
일반 형식:
const 형식 이름 * const 포인터 변수 이름;
예: int a = 12,b = 15;
const int * const p = &a;//
p = &b; //error, p
*p = 20; //error, p a
a = 20; //ok
요약:
상수를 가리키는 일반 포인터 즉 포인터 변수는 고정된 대상을 가리키며, 이 대상의 값은 변경할 수 없습니다(포인터 변수를 통해 대상의 값을 변경할 수 없습니다).
3.총결산
그러면 const와 바늘의 관계를 어떻게 기억합니까?우리는 const가 *에 있는 위치에서 다음과 같이 기억할 수 있다.const int *p = &a;
const는 *의 왼쪽에 표시됩니다.
포인터 p를 통해 가리키는 내용을 수정할 수 없습니다.int * const p =&a;
const는 *의 오른쪽에 표시됩니다.
포인터 p의 지향, 즉 포인터 값을 바꿀 수 없습니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
c 언어로 2차원 문자열 배열을 함수에서 반환하는 방법
c 언어를 사용하고 2차원 문자열 배열을 함수에서 main 함수로 반환하는 방법에 대한 메모를 남겨 둡니다.
※포인터 초보자이므로, 설명이 잘못되어 있으면 지적 부탁합니다.
paiza.io에서 실행해 보면 아래와 같...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
const int bufSize = 512;//OK
bufSize = 0;//error,bufSize
const int i;//error,
2.1 상수를 가리키는 바늘 변수
일반 형식:
const 형식 이름 * 바늘 변수 이름;
const int * p1;//
설명:
const는 p1 바늘이 가리키는 대상을 한정하고 바늘 p 자체를 한정하지 않습니다.정의할 때 초기화하지 않고 다른 const 대상을 가리키는 값을 다시 부여할 수 있지만 p를 통해 가리키는 대상의 값을 변경할 수 없습니다
예:
const int a = 10;//a ,
const int b = 15;
const int *p1;
p1 = &a;//ok
*p1= 20;//error, p1 a
p1 = &b;//ok,
*p1= 20;//error, p1 b
분석:
본질적으로 p1이 가리키는 대상이const인지 아닌지를 구분할 방법이 없기 때문에 시스템은 그것이 가리키는 모든 대상을const로 간주합니다.그래서const 대상을 가리키는 바늘도 비const 대상을 가리킬 수 있다.
예:
int c = 15;// const
p1 = &c;//ok, const
*p1 = 20;//error
요약:
정의할 때 초기화되지 않을 수 있습니다. const 대상을 가리키는 바늘을 통해 값을 수정하려는 모든 행위는 컴파일 오류를 초래할 수 있습니다.바늘 자체의 값은 바뀔 수 있다. 이렇게 하면 바늘 변수 p1은 서로 다른 주소를 가리키고 이를 인용하는 작업을 하면 서로 다른 값을 얻을 수 있다.
실제 프로그램에서 const를 가리키는 바늘은 함수의 인삼으로 자주 사용된다.인삼을 const를 가리키는 지침으로 정의하여 함수에 전달되는 실제 대상이 함수에서 인삼 때문에 수정되지 않도록 합니다.
2.1.1 계속 분석
(1)const 대상의 주소를 일반적이고 비const 대상의 지침에 부여하면 컴파일할 때 오류가 발생합니다
예:
const int val = 15;//const
void *ptr2 = &val;//error,iconst nt * int *
const void *ptr3 = &val;
(2)void* 포인터를 사용하여const 대상의 주소를 저장할 수 없으며,const void* 형식의 포인터를 사용하여const 대상의 주소를 저장해야 합니다
예:
const int val = 15;//const
void *ptr2 = &val;//error,iconst nt * int *
const void *ptr3 = &val;
2.2 일반 포인터(const 포인터)
이런 바늘 변수를 상시 바늘 변수라고 하는데, 약칭 상시 바늘이라고 하는데, 즉 바늘 값은 바꿀 수 없다.
일반 형식:
형식 이름 * const 포인터 변수 이름;
const int *p;
설명:
const는 포인터 변수를 한정합니다. const 포인터 변수에 값을 부여하려는 모든 행위는 컴파일 오류를 초래할 수 있습니다. 이 포인터를 통해 가리키는 대상의 값을 수정할 수 있는지 여부는 대상 자체에 달려 있습니다.
예:
int a = 12,b = 15;
int * const p = &a;//
p = &b; //error, p
*p = 20; //ok,
요약:
포인터 변수의 지향은 변하지 않는다.
2.3 상수를 가리키는 상시 바늘
일반 형식:
const 형식 이름 * const 포인터 변수 이름;
예:
int a = 12,b = 15;
const int * const p = &a;//
p = &b; //error, p
*p = 20; //error, p a
a = 20; //ok
요약:
상수를 가리키는 일반 포인터 즉 포인터 변수는 고정된 대상을 가리키며, 이 대상의 값은 변경할 수 없습니다(포인터 변수를 통해 대상의 값을 변경할 수 없습니다).
3.총결산
그러면 const와 바늘의 관계를 어떻게 기억합니까?우리는 const가 *에 있는 위치에서 다음과 같이 기억할 수 있다.const int *p = &a;
const는 *의 왼쪽에 표시됩니다.
포인터 p를 통해 가리키는 내용을 수정할 수 없습니다.int * const p =&a;
const는 *의 오른쪽에 표시됩니다.
포인터 p의 지향, 즉 포인터 값을 바꿀 수 없습니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
c 언어로 2차원 문자열 배열을 함수에서 반환하는 방법
c 언어를 사용하고 2차원 문자열 배열을 함수에서 main 함수로 반환하는 방법에 대한 메모를 남겨 둡니다.
※포인터 초보자이므로, 설명이 잘못되어 있으면 지적 부탁합니다.
paiza.io에서 실행해 보면 아래와 같...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
const int *p = &a;
int * const p =&a;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
c 언어로 2차원 문자열 배열을 함수에서 반환하는 방법c 언어를 사용하고 2차원 문자열 배열을 함수에서 main 함수로 반환하는 방법에 대한 메모를 남겨 둡니다. ※포인터 초보자이므로, 설명이 잘못되어 있으면 지적 부탁합니다. paiza.io에서 실행해 보면 아래와 같...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.