반응형

포인터와 레퍼런스의 차이


① 변수 p_a = 1, p_b = 2 생성

② 변수 r_a = 11, r_b = 22 생성

③ 포인터 변수 p 생성 후 p_a 변수의 주소값(13) 저장, 레퍼런스 변수 r 생성 후 r_a 변수 참조

④ 포인터 변수 p에 저장된 주소값(13)을 p_b 변수의 주소(14)로 변경, 레퍼런스 변수는 참조 변경 불가능

⑤ 포인터 변수 p에 저장된 p_b 변수의 주소(14)를 역참조(*p) 하여 p_b의 원본 값을 777로 변경

  레퍼런스 변수 r이 참조하는 r_a 변수의 원본 값을 888로 변경

 

(참고)

사진상 별표와 같이

변수 선언에 쓰는 포인터 기호(*)와 레퍼런스 기호(&)는 변수에 쓰는 * 기호와 & 기호와 역할이 다르다.

(int* p = &a // 변수 a의 주소를 받는 포인터 변수) != (*p = 777 // 포인터 변수 p에 저장된 a의 주소를 역참조)

(int& r = b // 변수 b를 참조하는 레퍼런스 변수) != (p = &b // 변수 b의 주소를 p에 대입)

 

한마디로 포인터 변수는 변수의 주소만 담을 수 있는 변수이고

레퍼런스 변수는 처음 선언할 때 참조할 변수를 지정해주면 그 변수 자체가 되는 것이다.

데이터베이스를 알면 레퍼런스 변수를 종속 관계 개념으로 생각하면 될거 같다.

 

const 위치에 따른 상수화 대상


const를 변수명 앞에 붙일거냐 자료형 앞에 붙일거냐에 따라 용도가 달라진다.

 

먼저 const가 변수명 앞에 왔을 경우이다.

 

p 앞에 const를 붙이면 p의 값을 상수화 한다는 뜻으로 값이 한번 지정되면 변경할 수 없다.

포인터 변수 p는 p_a 변수의 주소로 지정되고 상수가 되어 이후 p_b의 주소로 변경할 수 없다.

 

r 앞에 const를 붙이면 r의 값을 상수화 한다는 뜻이지만 레퍼런스(&) 자료형은 이미 상수로 선언된다.

붙이나 안붙이나 똑같은 상수라는 말이다. 레퍼런스 변수 r은 r_a를 참조하게 되고 어떤 것이든 바꿀 수 없다.

 

그리고 const가 자료형 앞에 왔을 경우이다.

이때는 포인터 변수 역참조 하거나 레퍼런스 변수로 참조된 변수 즉 원본을 수정 할 수 없다.

 

쉽게 말하면 변수명 앞에 const가 붙을 경우 그 대상의 주소를 바꿀 수 없고

자료형 앞에 const가 붙을 경우 그 대상의 값을 바꿀 수 없는 것이다.

반응형
반응형

 

https://gun-ny.tistory.com/30

전에 빌드 후 프로그램을 실행 했을때 한글이 깨지는 현상을 파일의 인코딩을 변경해서 해결했던 게시글을 올린적이 있다.

 

이번엔 편집기에서 인코딩 변경이 안되어 한글이 깨지는 현상을 자동 인코딩 옵션으로 해결하는 방법을 쓰려고 한다.

 

설정에 들어갑니다.

 

텍스트 편집기 -> 파일 -> Auto Guess Encoding 체크!

 

파일을 다시 열어보면 깨지지 않은 한글을 볼 수 있다.

반응형
반응형

차이점을 알고 있긴 했지만 겉핥기식으로 좀 대충 알고 있었던거 같아서 정리겸 써보았다.

 

예제 코드를 만들어서 표로 한번 정리해 보았다.

 

티스토리 에디터 표 기능이 너무 구려서 사진으로 대체.. (티스토리 표 기능 제발..)

C언어에서는 애초에 C++의 class 개념이 없으니 패스

C++로 넘어와서는 구조체 선언시 typedef를 안써도 쓴거와 동일하게 별명만 가지고 선언 가능해진 것

그리고 차이점을 꼽자면 C++에서 struct 정의시 접근 제한자 지정을 안해주면 기본 접근 제한자는 public으로 지정되고 class는 private으로 지정 된다는 것이다. 끗!

반응형
반응형

VS Code의 자동 완성기능 너무 좋댜..

"pri"까지만 입력해도 자동으로 "printf"를 띄워줘서 엔터를 치면 "printf"가 입력되고

객체명을 입력 후 쩜만 찍어줘도 해당 클래스 멤버들이 자동으로 추천되어 엔터만 쳐도 입력되고

 

그런데 인간의 욕심은 끝이 없다고 끝에 세미콜론(;)을 쓰기 귀찮아서 자동으로 쓸 수 없나 원하게 된다.

 

역시나. 있다.

다른 익스텐션이 몇개 더 있었는데 제일 유명한게 Colonize 인거 같다.

 

익스텐션 설명 내용에 있는 이미지 하나로 설명을 끝내기로 한다.

반응형

+ Recent posts