본문 바로가기

C++40

C++ void Void 반활할 타입이 없다. return 할 필요가 없다. 함수가 값을 반환하지 않음 void pointer 아무 데이터 타입의 주소의 값을 다 받을 수 있지만 역참조가 안된다. 원본의 자료형을 정하지 않아서 역참조를 할 때 어떻게 접근해야 할지 몰라서 역참조가 안된다. 마찬가지로 주소 연산도 불가능 하다. 특징 1. 어떤한 타입의 변수의 주소든 다 저장 가능하다. 2. 역참조 불가능하다. 3. 주소 연산 불가능하다. 그래서 void 포인터를 사용하기 위해선 대입한 데이터형으로 형변환 시킨 후에 사용해야 한다. 왜냐하면 void 포인터가 뭘 가리키는 지 모르기 때문이다. 배열로 해봤습니다. 형변환 후 사용해야 주소 연산 역참조가 가능해진다.! 출처 : https://www.youtube.com/c/As.. 2022. 6. 6.
C++ 상수(const) 상수 값이 변하지 않는 수 앞에 const를 붙여준다. ex) const int a = 10; // a라는 값은 10에서 바뀌지 않음 a = 11; //오류 상수와 포인터 const가 어디에 붙냐에 따라서 달라진다 앞에 붙었을때를 보자 포인터가 앞에 붙으면 포인터가 가르키는 원본의 값을 상수화하여 값을 수정할 수 없지만 다른 주소의 값을 넣을 수 있다. 반대로 뒤에 붙으면 포인터 변수 자체가 상수화 되서 다른 주소의 값을 받을 수 없게 된다. 반대로 원본의 값을 바꿀 수 있다. 이렇게 const를 어디에다 붙이냐에 따라 차이가난다. 두가지 동시에 상수화 주소값을 넣을 수 없고 원본의 값도 바꿀 수 없다. 즉 초기화 시 가리킨 대상만 가리키고, 가리키는 원본을 수정 할 수 없다. 주의 변수 a가 상수화가 .. 2022. 6. 5.
C++ 포인터 포인터 주소를 가르키는 변수 포인터 변수는 처리과정은 정수로 처리한다. 포인터의 주소단위는 byte이다. 포인터를 선언할때 정수를 선언해줘야 한다. 자료형 + *변수명 해당 포인터에게 전달된 주소를 해석하는 단위(자료형) 크기는 전부 32비트 운영체제 4바이트 64비트 8바이트 포인터 선언방법 nullptr : 포인터가 아무것도 가르키지 않는다는 뜻 즉 주소를 안가르킨다. 사용방법 &변수명은 변수명에 주소를 나타냄 pint는 i의 주소값을 넣겠다는 뜻 포인터를 사용하여 변수값 변경 변수명앞에 별을 붙이므로써 주소값을 참조하겠다는 뜻이다. 즉 i의 주소값에 300을 넣겠다는 뜻 포인터는 같은 자료형의 주소만 가능하다. int포인터의 실수값을 저장하면 문법적으로 에러가 발생한다. 그래도 하고싶으면 강제언래핑.. 2022. 6. 3.
C++ 정적 변수 & 외부 변수 정적변수(static) 변수명앞에 static을 붙여줌,초기화하지 않아도 자동으로 0으로 초기화 된다. ex) static int n; 정적변수는 static뜻 말 그대로 안움직이다 즉 선언된 곳에서만 쓸 수 있다라는 뜻이다. 어디에서 쓰냐에서 따라서 달라진다. 예를 들어보자 main()함수 밖에 선언됐다. 이 뜻은 즉 소스파일(main.cpp)에서 선언됐다라는 뜻이다. 즉 전역변수라고 생각하면 편하다. 위 소스와 같이 main.cpp에서 쓸 수 있으므로 지역변수 처럼 사용 가능하다. 그러면 함수안에 정적 변수를 써보면 어떻게 될까? Test라는 함수를 만들어서 사용해 보았다. 값은 3이 나온다 즉 그뜻은 statci은 지역변수랑 달리 호출 댈때마다 0으로 초기화 시켜주는 것이 아닌 초기값을 0을 주겠다.. 2022. 6. 1.
C++ 분할구현 분할구현: 헤더랑 파일을 구별하는 것 분할구현하는 이유는 하나의 프로그램을 만들 때 메인 소스파일에다가 다 만들면 코드가 많아져 보기 힘들어짐 그래서 각 기능별로 분할로 나눈다. 헤더 파일을 일단 하나 만들기 b.h라는 헤더파일을 하나 만들었다. 저 코드의 뜻은 add라는 함수가 어딘가의 있다라는 뜻이다. 그러면 add라는 함수의 구현은 어디있는가? 그것은 소스파일 a.cpp에 있을 수도 있고 main.cpp에 있을수도 있다. 우리는 분활로 구현할것이니 a.cpp의 구현을 해보자 a.cpp소스 파일이다. #include "b.h"는 쉽게 말하면 b.h헤더 파일을 a.cpp의 복붙한다고 생각하면 된다. 즉 b.h의 add함수가 있어요 라는 코드가 a.cpp에도 있다고 생각하면 쉽다. a.cpp는 add함수.. 2022. 6. 1.
C++ 지역변수,전역변수 지역변수(Local variable) : 지역변수는 함수 내부에서 선언되며 해당 함수가 호출되어 실행되면 생성되었다가 함수가 종료되면 사라지는 변수이다. 해당 범위 내에서만 사용 가능하며 다른 함수에서는 접근이 불가하다. 간단하게 예를 보자 여기서 지역변수는 함수 내부에 선언되있는 코드이다. 그렇다면 함수 a()를 만들어 i++을 해주고 메인 함수로 3번 시키면 3번증가해서 3이 출력될까? 결과는 아니다 지역변수는 스택형식으로 a()함수를 실행하고 1을 메인함수에 주고 소멸하기 때문에 다음 함수를 실행해도 이미 소멸했기 때문에 처음부터 다시 시작한다 그러므로 a();을 실행하면 전부 1이 나오게 된다. 전역 변수(Global variable) : 전역 변수는 함수 외부에서 선언되며 범위(스코프)에 구애받.. 2022. 5. 30.