C++Primer - 변수 및 기본 유형

6344 단어
  • 초기화와 값 초기화의 의미는 변수를 만들 때 초기 값을 부여하는 것이다. 값 초기화의 의미는 대상의 현재 값을 지우고 새로운 값으로 대체하는 것이다.목록 초기화: int units = 0; int units = {0}; int units{0}; int units(0); 그러나 초기 값이 정보를 잃어버릴 위험이 있으면 컴파일러가 오류를 보고합니다.함수체 내부에 정의된 내장 형식 변수는 초기화되지 않습니다.초기화되지 않은 내장 형식 변수의 값은 정의되지 않았습니다. 이 값을 복사하거나 접근하면 오류가 발생합니다.클래스의 대상이 현저하게 초기화되지 않으면 그 값은 클래스에 의해 결정됩니다.
  • 분리식 컴파일러는 성명과 정의를 구분합니다. 성명은 프로그램이 알 수 있도록 하고, 파일은 다른 곳에서 정의한 이름을 사용하려면 그 이름에 대한 성명을 포함해야 합니다.이름과 관련된 실체를 만들고 저장 공간을 신청할 수도 있고 변수에 초기 값을 부여할 수도 있습니다.extern은 변수를 정의하는 것이 아니라 설명합니다.명시적 초기화를 포함하는 모든 성명은 정의가 됩니다.변수는 한 번만 정의될 수 있지만 여러 번 성명될 수 있다.함수 외부에 정의된 식별자는 밑줄로 시작할 수 없습니다.
  • 작용역std::cout << ::reused에 나타난 접근 전역 변수는 전역 작용역에 이름이 없기 때문에 작용역 조작부호의 왼쪽이 비어 있으면 전역 작용역에 요청합니다.
  • 복합 유형
  • 인용 인용을 대상으로 다른 이름을 지었고 인용 유형은 다른 유형을 인용했으며 성명부호를 &d로 작성한 형식으로 인용 유형을 정의했다.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 const 대상은 만들면 값을 바꿀 수 없기 때문에 const 대상은 초기화해야 한다. const int i = 43; 기본적으로 const 대상은 파일에서만 유효하게 설정되고 여러 파일에 같은 이름의 const 변수가 나타날 때 서로 다른 파일에서 각각 독립된 변수를 정의하는 것과 같다.한 파일에서 const를 정의하고 다른 여러 파일에서 설명하고 사용할 수도 있습니다.const는 성명이든 정의든 extern 키워드를 추가합니다. 이렇게 하면 한 번만 정의할 수 있습니다.extern const int bufSize = fcn();extern으로 다른 파일에 사용할 수 있도록 제한합니다.extern const int bufSize;extern 한정은 bufSize가 이 파일에만 있는 것이 아니라 다른 곳에 정의가 나타날 수 있음을 가리키는 역할을 한다.
  • const의 인용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 맨 윗부분 const는 바늘 자체가 상수임을 나타내고 맨 윗부분 const는 바늘이 가리키는 대상이 상수임을 나타낸다.인용을 설명하는 데 사용되는 const는 밑바닥 constconst 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는 상량 지침으로 성형 상량 i
  • 를 가리킨다
  • 유형별명typedef 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 형식 지시자decltype 작용은 조작수를 선택하고 되돌려주는 데이터 형식입니다. decltype(f()) sum = x;sum의 형식은 함수 f의 되돌려주는 형식입니다. 표현식 내용이 인용 풀이 작업이면decltype은 인용 형식을 받습니다. int i = 42, *p = &i; decltype(*p) c// ;c의 형식은 int & 변수 이름입니다. 괄호를 붙이면 컴파일러가 표현식으로 사용하기 때문에decltype은 인용 형식을 받습니다. decltype((i)) d;//d int &
  • 헤더 파일은 각 파일의 클래스 정의가 일치하도록 하기 위해 클래스는 헤더 파일에 정의되고 클래스가 있는 헤더 파일의 이름은 클래스의 이름과 같아야 한다.Sales_데이터 클래스 정의는 Salesdata.h의 헤더 파일에서헤더 파일에는 한 번만 정의될 수 있는 실체, 클래스, const, constexpr 변수가 포함되어 있습니다.헤더 파일이 여러 번 안전하게 작동할 수 있도록 하는 것은 프리프로세서이며, 컴파일하기 전에 실행되는 프로그램입니다.헤더 파일 보호자, 예처리 변수는 두 가지 상태가 있습니다. 정의된 상태와 정의되지 않은 상태입니다. #define는 이름을 예처리 변수로 설정하고 #ifdef는 변수가 정의된 상태일 때만 진실이고 #ifndef는 변수가 정의되지 않은 상태일 때만 진실하지 않습니다.#endif가 사용될 때까지.
  • #ifndef SALES_DATA_H
    #define SALES_DATA_H
    #include 
    struct Sales_data{
    };
    #endif```

    좋은 웹페이지 즐겨찾기