C++87 C++ 기초 : 문자 아래 코드를 보시죠. char형 변수 c를 선언하고 1을 대입했고bool형 변수 b를 선언한 후 1을 대입했습니다. 1을 대입한 변수 b의 값은 true네요.bool형은 1Byte 크기를 가진 자료형으로bool형 변수에 0이 들어오면 false,1이 들어오면 true로 인식하기 때문입니다. 변수 c의 값도 확인해 보죠.1이 들어가 있긴 한데 뒤에 '\x1'가 같이 있네요. 무슨 의미일까요? char형은 정수 1Byte를 담을 수 있습니다.특히 문자를 표현하는데 사용하죠.char형 변수에 숫자를 넣으면그에 대응하는 문자가 출력되는 것입니다. 아래 표를 보시죠. 컴퓨터는 위와 같은 표를 기준으로숫자에 대응하는 동작을 하거나 문자를 출력하는 것입니다.이러.. 2024. 4. 1. C++ 기초 : void void는 자료형을 지정하지 않았음을 의미합니다. 그렇기 때문에 void형을 가진 변수는 선언할 수 없으며,void형 함수는 반환 값이 존재할 수 없습니다. 그러나 void형 포인터 변수는 만들 수 있습니다. 아래 코드를 보시면 10번째 줄에 void형 포인터 변수 pVoid가 선언되었습니다. 이후 12 ~ 15번째 줄에서 다양한 자료형을 가진변수의 주솟값을 저장하였습니다. 여기서 void형 포인터 변수의 첫 번째 특징이 나옵니다. 1. 자료형을 지정하지 않았으므로 어떤 자료형을 가진 변수라도 주솟값을 저장할 수 있다. 강제로 형변환을 하지 않아도자료형에 상관없이 주솟값을 저장할 수 있는 모습이죠. 17번째 줄에서 pVoid에저장된 주소를 찾아가 값.. 2024. 3. 31. C++ 기초 : const 포인터 예시 const 포인터는 어떤 상황에서 사용할까요? 아래 상황을 봅시다. main 함수에서 '다른 함수'를 호출하였습니다. 근데 다른 함수가 main 함수의 지역 변수 a를매개변수로 받는 함수입니다. 그럼 다른 함수가 만들어지면서 main 함수의 지역 변수 a를복사해서 다른 함수의 지역 변수에 넣을 것입니다. 그리고 다른 함수의 동작이 모두 끝나면 소멸하겠죠. 근데 만약에 변수 a의 크기가 엄청 크다고 가정해 봅시다.심지어 다른 함수는 자주 호출되는 함수라고 가정해 보죠. 그러면 아주 큰 용량의 변수 a가 자주 복사되고 소멸하는 것을 반복하겠죠? 프로그램의 성능이 많이 떨어질 것입니다. 성능을 위해서매번 함수를 호출할 때마다 복사하지 말고 포인터를 사용.. 2024. 3. 31. C++ 기초 : const 포인터 포인터 변수에도 const 키워드를 붙여 상수화할 수 있습니다. 이 경우 두 가지 상황이 발생하는데요. 어떤 포인터 변수가 변수 a의 주소를 저장하고 있습니다. 이때 const를 통해 포인터 변수가 저장하고 있는 변수를상수화하거나, 포인터 변수 자체를 상수화할 수 있습니다. 예를 들어 보죠. 포인터 변수 pInt는 변수 a의 주솟값을 저장하고 있습니다. pInt를 통해 변수 a의 값을 직접 변경하려고 하니 오류가 발생합니다.식이 lvalue여야 한다고 합니다. 이는 a가 rvalue로 인식되어수정할 수 없는 상태가 되었다는 것입니다. 포인터 변수가 저장하고 있는 변수를 상수화한 상황이죠. 이번에는 또 다른 상황을 봅시다. 13번째 줄부터 새로운 코드를.. 2024. 3. 31. C++ 기초 : const 변수를 선언할 때 'const'라는 키워드를 붙여 해당 변수를 상수화할 수 있습니다. const int형 변수 cint의 값은 100입니다.const가 붙어 있기 때문에 cint의 값은 바꿀 수 없습니다. 아래 코드를 보면cint에 10을 대입하려고 하자, "식이 수정할 수 있는 lvalue여야 합니다."라는오류가 발생합니다. 여기서 lvalue는 int a = 10; 이런 코드가 있을 때 왼쪽은 변수이므로값을 수정할 수 있죠? 이게 바로 lvalue입니다. 반대로 값을 수정할 수 없는,오른쪽에 있는 10은 rvalue입니다. 10 = 11; 위와 같은 코드는 이상하죠?10이 수정할 수 없는 rvalue이기 때문이죠. 비록 cint는 변수이지만.. 2024. 3. 30. C++ 기초 : 포인터 문제 풀이와 해답 포인터 관련하여 두 가지 문제를 풀어 봅시다. 먼저 첫 번째 문제를 풀어 보죠. short형 배열 sArr이 선언되었고 각 칸에 1 ~ 10의 숫자가 들어 있습니다. 해당 배열의 주소를 int형 포인터 변수 pI에 강제로 형변환하여 저장합니다. 그림으로 나타내면 위와 같은 상황입니다. 각 칸마다 주솟값의 차이가 2씩 나는 이유는해당 배열이 short형이므로각 칸의 크기는 2Byte이기 때문입니다. 이 상태에서 괄호 안의 내용을 먼저 연산합니다.pI + 2부터 연산해야겠죠? 연산하면 위 그림처럼 됩니다. pI는 int형 포인터 변수이기 때문에 4Byte씩 읽을 것입니다.그래서 pI에 2를 더하면 4Byte + 4Byte = 8Byte만큼 건너가1008.. 2024. 3. 30. 이전 1 ··· 7 8 9 10 11 12 13 ··· 15 다음