C++Primer - 변수 및 기본 유형
int units = 0; int units = {0}; int units{0}; int units(0);
그러나 초기 값이 정보를 잃어버릴 위험이 있으면 컴파일러가 오류를 보고합니다.함수체 내부에 정의된 내장 형식 변수는 초기화되지 않습니다.초기화되지 않은 내장 형식 변수의 값은 정의되지 않았습니다. 이 값을 복사하거나 접근하면 오류가 발생합니다.클래스의 대상이 현저하게 초기화되지 않으면 그 값은 클래스에 의해 결정됩니다.std::cout << ::reused
에 나타난 접근 전역 변수는 전역 작용역에 이름이 없기 때문에 작용역 조작부호의 왼쪽이 비어 있으면 전역 작용역에 요청합니다.int &refVal = ival; //refVal ival
인용을 정의할 때 프로그램은 인용을 초기 값과 연결시킨다. 초기화가 완료되면 인용은 초기 값의 대상과 계속 연결되기 때문에 인용은 초기화해야 한다.인용 자체는 하나의 대상이 아니기 때문에 인용의 인용을 정의할 수 없다.인용은 대상에만 귀속될 수 있으며, 글꼴 값이나 표현식의 계산 결과와 귀속될 수 없습니다.int *d;//
. 바늘은 특정한 대상의 주소를 저장하고 이 주소를 얻으며 주소 찾기 문자를 사용합니다int *p = &ival;
. 인용은 대상이 아니며 실제 주소가 없기 때문에 인용을 가리키는 바늘을 정의할 수 없습니다.다른 모든 포인터 유형은 포인터가 가리키는 대상과 정확하게 일치해야 한다.포인터가 객체를 가리키면 참조* 기호를 사용하여 객체에 액세스할 수 있습니다.int val = 42; int *p = &val; cout << *p;
인용된 결과에 값을 부여하면 사실상 바늘이 가리키는 대상에 값을 부여한다.빈 바늘int *p1 = nullptr;
에서 빈 바늘을 얻을 수 있는 가장 직접적인 방법은nullptr로 바늘을 초기화하는 것이다.또는 바늘을 0으로 초기화하지만 int 변수의 0, int *p2 = 0;
또는 실용 cstdlib의 예처리 변수인 NULL에 값을 부여할 수 없습니다. #include cstdlib int *p3 = NULL;
예처리기는 컴파일링 과정이 실행되기 전의 프로그램입니다. 예처리 변수는 명칭 공간 std에 속하지 않고 예처리기가 관리하기 때문에 std::를 추가할 필요가 없습니다. nullptr 바늘을 초기화하는 것이 가장 좋습니다. 대상을 정의한 후에 바늘을 정의하는 것이 좋습니다.또는nullptr로 초기화하여 영원히 바뀐 것은 등호 왼쪽의 대상이고 pi변경은 지침이며 *pi변경은 지침이 가리키는 대상이다.void*지침은 임의의 대상의 주소를 저장하는 데 사용할 수 있지만 double obj = 3.14; void *pv = &obj;
void*지침이 가리키는 대상을 직접 조작할 수 없습니다. 대상이 어떤 유형인지 모르기 때문에 이 대상에서 조작할 수 없습니다.void*메모리 공간은 메모리 공간으로 메모리 공간에 저장된 대상에 접근할 수 없습니다.형식 수식자, 예를 들어 *, & 성명자의 일부분일 뿐, 변수의 정의는 기본 데이터 형식과 성명자 그룹을 포함한다.따라서 여러 개의 바늘 변수를 정의하려면 반드시 이렇게
int \*p1, \*p2;
바늘의 바늘, 바늘식 메모리의 대상이 있어야 하기 때문에 자신의 주소도 있기 때문에 바늘의 주소를 다른 바늘에 다시 저장할 수 있습니다.**지침을 가리키는 지침을 표시한다int ival = 1024; int *pi = &ival; int \*\*ppi = π
. 따라서 가장 원시적인 대상에 접근하려면 지침의 지침을 두 번 인용해야 한다.**ppi.지침의 인용int i = 43; int *p; int *&r = p;//r p 。 r = &i; *r = 0;
은 오른쪽에서 왼쪽으로 r의 정의를 읽는데 변수 이름과 가장 가까운 기호가 변수의 영향에 가장 직접적인 영향을 미치기 때문에 r는 하나의 인용이다.*r가 인용한 지침을 설명한다.오른쪽에서 왼쪽으로 읽어 진의를 분명히 하다const int i = 43;
기본적으로 const 대상은 파일에서만 유효하게 설정되고 여러 파일에 같은 이름의 const 변수가 나타날 때 서로 다른 파일에서 각각 독립된 변수를 정의하는 것과 같다.한 파일에서 const를 정의하고 다른 여러 파일에서 설명하고 사용할 수도 있습니다.const는 성명이든 정의든 extern 키워드를 추가합니다. 이렇게 하면 한 번만 정의할 수 있습니다.extern const int bufSize = fcn();
extern으로 다른 파일에 사용할 수 있도록 제한합니다.extern const int bufSize;
extern 한정은 bufSize가 이 파일에만 있는 것이 아니라 다른 곳에 정의가 나타날 수 있음을 가리키는 역할을 한다.const int ci = 1024; const int &r1 = ci;
인용과 그에 대응하는 대상은 모두 상수이며 인용과 귀속된 대상의 관계는 변하지 않는다.인용의 형식은 인용된 형식과 일치해야 하지만, 상수 인용을 초기화하면 인용된 형식으로 변환될 수 있는 모든 표현식을 초기 값으로 사용할 수 있습니다.const int &r2 = 43;
, double dval = 3.14; const int &ri = dval;
ri가 정수를 연결하는 것을 확보하고 컴파일러는 다음과 같은 조작을 했다. const int temp = dval; const int &ri = temp;
ri는 임시량 대상을 연결했다.그러나 리(ri)가 상수가 아니라면 이때 귀속된 대상은 임시량이지 dval이 아니기 때문에 dval값을 바꿀 수 없기 때문에 이런 행위는 불법이다.const에 대한 인용은 const가 아닌 대상을 인용할 수 있습니다 int i = 43; const int &r2 = i;
const double pi = 3.14; const double *cptr = π
바늘의 유형은 가리키는 대상의 유형과 일치해야 하지만 상수를 가리키는 바늘이 비상량을 가리키는 대상을 가리키도록 허용한다double dval = 3.14; cptr = &dval;
상수를 가리키는 바늘은 이 바늘을 통해 대상의 값을 바꿀 수 없도록 요구할 뿐이다.const 포인터, 상수 포인터는 포인터가 저장한 값을 더 이상 바꿀 수 없다는 것을 설명한다. 변하지 않는 것은 포인터 자체의 값이지 가리키는 그 값이 아니다.int errNumb = 0; int *const curErr = &errNumb; const double pi = 3.14; const double *const pip = π//
, 오른쪽에서 왼쪽으로 읽으면curErr는 상수 대상이고 *는 상수 지침이며 pip는 상수 지침으로 상수 대상을 가리킨다.const int &r = ci;
입니다. 대상의 복사 작업을 수행할 때 복사와 복사의 대상은 같은 밑바닥 const 자격을 가져야 하거나 두 대상의 데이터 형식을 변환할 수 있어야 합니다.const int max = 20; const int limit = max + 1;
constexpr 변수로 이러한 유형은 상수임을 나타낸다. constexpr int mf = 20;
산술 유형이고 인용과 지침은 모두 서면 값 유형에 속하며 컴파일할 때 결과를 얻을 수 있는 유형을 가리킨다.그래서 constexpr 형식으로 정의할 수 있습니다.constexpr은 이 정의의 대상을 맨 윗부분 const로 설정합니다. constexpr int *q = nullptr;
q는 상수 지침입니다.constexpr const int *p = &i;
p는 상량 지침으로 성형 상량 itypedef double wages; typedef wages base, *p;
wages는 더블의 동의어이고base도 더블*의 동의어이다.별명 성명, using SI = Sales_item;
typedef char *pstring; const pstring cstr = 0; const pstring *ps;
char를 가리키는 상수 바늘 auto에서 정의한 변수는 초기값이 있어야 하며, 여러 변수를 성명할 때 이 문장의 모든 변수의 초기 기본 데이터 형식은 같아야 한다.만약 auto 유형이 맨 윗부분const로 추정된다면 const auto f = ci;
decltype(f()) sum = x;
sum의 형식은 함수 f의 되돌려주는 형식입니다. 표현식 내용이 인용 풀이 작업이면decltype은 인용 형식을 받습니다. int i = 42, *p = &i; decltype(*p) c// ;
c의 형식은 int & 변수 이름입니다. 괄호를 붙이면 컴파일러가 표현식으로 사용하기 때문에decltype은 인용 형식을 받습니다. decltype((i)) d;//d int &
#ifndef SALES_DATA_H
#define SALES_DATA_H
#include
struct Sales_data{
};
#endif```
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.