본문 바로가기
D.evelop/C++

[C++] 포인터 (값 대입 시 고려사항)

by Danne 2024. 10. 13.

Pointer 

 

포인터 변수

- 메모리 주소만 가리키는 변수

- *변수명

#include <iostream>

int main()
{
    
    int a(10);		
    int b(20);	

    // 포인터 변수는 무조건 "주소만" 저장한다, 
    // 일반 값을 저장할 수 없음
    //즉, *의 갯수에 따라서 포인터 변수의 성질이 달라짐
    int *pa = &a;	
    int **ppa = &pa;	
    int ***pppa = &ppa;	


    *pa = 100; //a의 값이 100으로 변경. *pa => a와 동일
    std::cout << *pa << std::endl; // 100
        
    *ppa = &b; // *ppa => pa와 동일
    std::cout << *ppa << std::endl; // ppa 포인터 주소
    
    **ppa = 100; //b의 값이 100으로 변경. **ppa => b와 동일
    std::cout << **ppa << std::endl; // 100
    
    ***pppa = 1000; // b의 값이 1000으로 변경. ***ppa => b와 동일
    std::cout << ***pppa << std::endl; // 1000
}

 

 

 

✅ C++ 값 대입시 고려사항

//1. 변수 선언과 값의 대입을 동시에하여 초기화 시킴
const int a = 10; 

//2. 해당 스타일로 선언해도 되지만, C언어 스타일이라 비추천
int hello = 0; 

// 2방법으로 작성하면,컴파일 단계에서 아래외 같은 C++스타일로 변환하는 과정이 진행됨
int hello(0);  // 자동으로 형변환
int hello{0};  // 형변환 안됨. 명확한 값을 처리 시 사용.

 

 

반응형

'D.evelop > C++' 카테고리의 다른 글

[C++] 기초 문법  (1) 2024.09.28

댓글