C++87 C++ 기초 : 포인터 배열 포인터 변수는 메모리의 주소를 담을 수 있습니다.이러한 포인터 변수의 크기는 어떻게 될까요?int형 포인터 변수는 4Byte, char형 포인터 변수는 1Byte일까요? 그렇지 않습니다. 포인터 변수의 자료형은 해당 주소로 접근하였을 때 그곳에 있는 값을해당 자료형으로 인식하겠다는 의미일 뿐,포인터 변수의 크기는 아닙니다. 포인터 변수의 크기는 가변 길이로플랫폼에 따라 달라집니다. 운영체제에서 32Bit, 64Bit가 의미하는 것은한 번에 처리할 수 있는 데이터 용량이죠?포인터 변수의 크기는 여기에 맞추어서 정해집니다.즉 32Bit에서 포인터 변수의 크기는 4Byte이며64Bit에서 포인터 변수의 크기는 8Byte입니다. 확인해 보도록 하죠. 상단 중간에 .. 2024. 3. 30. C++ 기초 : 포인터 주소를 저장하는 변수를 포인터 변수라고 합니다. 아래 코드를 보면 int형 포인터 변수 'pInt'을 선언하고 nullptr을 대입했습니다.nullptr은 아무것도 대입하지 않는 것과 같은 의미죠. 이번에는 int형 변수 'i'를 선언하고 100을 대입했습니다. 그리고 포인터 변수 pInt에 &i를 대입했습니다.변수 앞에 &를 붙이면 해당 변수의 주솟값을 나타냅니다.즉 pInt에 변수 i의 주솟값을 넣었다고 볼 수 있습니다. 그럼 여기서 주솟값은 무엇일까요?메모리에는 각 자리마다 어떤 값이 들어있을 겁니다.비어있는 경우도 있겠죠. 그 값에 접근하려면 해당 값이 있는메모리의 주소를 찾아가 접근하는 겁니다. 비어 있는 자리에 값을 넣을 때도 마찬가지로주소를.. 2024. 3. 29. C++ 기초 : 운영체제 플랫폼이란 무엇일까요? 크게 보면 컴퓨터에서 윈도우,스마트폰의 안드로이드, iOS 등이 있습니다. 더 작은 의미로 보면게임 플랫폼인 스팀, 오리진, 에픽게임즈 등이 있겠죠. 스팀을 통해 구매하고 다운 받은 게임을 오리진을 통해 실행할 수 있을까요? 없습니다. iOS를 기준으로 만들어진 앱을 안드로이드에서 그대로 사용할 수 있을까요? 마찬가지로 안됩니다. 우리가 어떤 프로그램을 만들 때 이러한 플랫폼을 고려해야 합니다.PC에서 구동하는 프로그램을 만든다고 할 때많은 사람이 사용하기를 원한다면윈도우를 기준으로 만드는 것이 유리할 것입니다. PC는 거의 다 윈도우를 기반으로 하기 때문이죠. 비주얼 스튜디오 우측을 보면'솔루션 탐색기'라고 있습니다. 프로그.. 2024. 3. 29. C++ 기초 : 정적 변수와 외부 변수 어떤 파일에서도 사용할 수 있는 전역 변수를 만드려고 합니다.그러나 각 파일에 전역 변수를 선언하면 링크 과정에서 중복 정의 문제가 발생하고, 한 파일에만 선언해서 사용하자니다른 파일에서 전역 변수를 인식하지 못하는 문제가 발생합니다. 이번에는 정적 변수를 통해 이 문제를 해결해 보죠.정적 변수는 선언된 지역(파일이나 함수)에서만 사용 가능합니다.정적 변수로 선언하려면 앞에 'static'이라는 키워드를 붙입니다. 예시를 봅시다. main 함수가 있는 파일에정적 변수 'global'을 선언하고 0으로 초기화했습니다.이후 global에 1을 대입합니다. 그리고 Add 함수의 정의가 있는 파일에도정적 변수 'global'을 선언하고 0으로 초기화했습니다.이후 global.. 2024. 3. 29. C++ 기초 : 분할 구현의 문제점 함수를 선언하는 헤더 파일과함수를 정의하는 소스 파일,그리고 함수를 사용하는 파일로 나누었습니다. 그러면 '굳이 함수의 선언과 정의를나누지 않고 헤더 파일에 다 넣으면 안될까?'라는생각이 듭니다. 하지만 이런 경우 문제가 발생합니다. 아래 그림처럼헤더 파일에 Add 함수의 선언과 정의를 모두 넣고 다른 파일에서 Add 함수를 사용하려면각 파일마다 #include를 써야 합니다.#include는 사실 복사 붙여넣기와 같습니다.즉 각 파일마다 Func.h의 내용을 복사해서 붙여넣는 것이죠.그렇게 되면 각 파일마다 Add 함수가 선언되고 정의되는 것입니다. 각각의 파일에서는 문제가 발생하지 않을지 몰라도결국 마지막에 하나의 파일로 합쳐질 때 Add 함수가 여러 개 선언.. 2024. 3. 22. C++ 기초 : 분할 구현 아래와 같이 구현하면 오류가 발생합니다. 이유가 뭘까요? 하단에 표시되는 오류 목록에서코드를 보니 'C3861'입니다.오류 코드가 C로 시작하는 거 보니컴파일 과정에서 발생하는 오류네요.Test 식별자를 찾을 수 없다고 합니다. 컴파일러는 위에서부터아래로, 순차적으로컴파일을 진행합니다. main 함수에서 Test 함수를 호출했는데Test 함수를 호출하기 전, 위 코드에서Test 함수를 검사한 적이 없습니다.물론 main 함수 밑에 Test 함수가 정의되어 있지만,Test 함수 호출 시점에서는 정의되었는지 모르기 때문에오류가 발생하는 것이죠. 그렇다면 이번에는 이렇게 해볼까요? main 함수 위에 void Test(); 라는 코드를 넣었습니다... 2024. 3. 6. 이전 1 ··· 8 9 10 11 12 13 14 15 다음