C++ 5

[ C ] 07. 열거형

[ 열거형 ] 열거형은 정수형 상수에 이름을 붙여 코드를 이해하기 쉽게 해준다. 만약 여러개 정수형 상수를 선언한다면 두세 개까지는 괜찮지만 개수가 많아지면 귀찮아 질 것이다. 열거형을 사용하면 정수형 상수를 좀 더 편하게 정의할 수 있다. enum 열거형이름{ value1 = 초깃값, value2, value3 }; 열거형은 정의로만 사용이 안되고 변수로 선언해서 사용해야 한다. enum 열거형이름 변수이름; #include enum DayOfWeek{ // 열거형 정의 Sunday = 0; // 초깃값 할당 Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; int main(){ enum DayOfWeek week; // 열거형 변수 선언 week ..

[ C ] 06. 포인터연산

[ 포인터연산 ] 포인터로 선언한 변수에는 메모리 주소가 들어있다. 이 포인터 변수에서 연산을 할 수 있다. 마찬가지로 메모리 주소에 일정 숫자를 더하거나 빼면 메모리 주소가 증가,감소 한다. 즉, 포인터 연산을 하면 다른 메모리 주소에 접근할 수 있으며 메모리 주소를 손쉽게 옮겨 다니기 위해서 사용한다. 여기서 메모리 주소가 커지는 상황을 순방향 이동(forward), 메모리 주소가 작아지는 상황을 역방향이동(backward)라 하겠다. 포인터연산으로 메모리 주소 조작하기 #include int main(){ int numArr[5] = { 11, 22, 33, 44, 55 }; int *numPtrA; int *numPtrB; int *numPtrC; numPtrA = numArr; // 배열 첫 번..

[ C ] 04. 포인터의 형변환

[ 포인터의 형변환 ] #include #incldue // malloc, free 함수가 선언된 헤더파일 int main(){ int *numPtr = malloc(sizeof(int)); // 4바이트만큼 메모리 할당 char *cPtr; *numPtr = 0x12345678; cPtr = (char *)numPtr; // int 포인터 numPtr을 char 포인터로 변환. 메모리 주소만 저장됨 printf("0x%x\n", *cPtr); // 0x78 : 낮은 자릿수 1바이트를 가져오므로 0x78 free(numPtr); // 동적메모리 해제 return 0; } # 실행 결과 0x78 numPtr에 메모리를 할당하고 역참조하여 0x12345678을 저장했다. 그리고 cPtr = (char *)n..

[ C ] 03. 포인터와 역참조 연산자

[ 포인터와 역참조 연산자 ] 포인터 변수에는 메모리 주소가 저장되어 있다. 이 때 메모리 주소가 있는 곳으로 이동해서 값을 가져오고 싶다면 역참조 연산자 *를 이용한다. #include int main(){ int *numPtr; // 포인터 변수 선언 int num1 = 10; // 정수형 변수를 선언하고 10 저장 numPtr = &num1; // num1의 메모리 주소를 포인터 변수에 저장 printf("%d\n", *numPtr); // 10 // 역참조 연산자로 num1의 메모리 주소에 접근하여 값을 가져온다 return 0; } # 실행 결과 10 역참조 연산자 *는 포인터 앞에 붙인다. 다음과 같이 numPtr 앞에 *를 붙이면 numPtr에 저장된 메모리 주소로 가서 값을 가져온다. 여기..

[ C ] 02. 문자열 관련 자주 쓰이는 함수

[ atoi, atof, atol ] 1. atoi, atof, atol 함수의 기원 atoi 함수를 살펴보면 a - to - i 이렇게 나눌 수 있다. a=char(AScII), i = int atoi (char to int) = 문자열을 정수 타입으로 atof (char to double) = 문자열을 실수 타입으로 atol (char to long int) = 문자열을 long 정수 타입으로 중요한 것은 여기서 char는 char[N], char*로 표현이 되는 문자열을 말한다. // ( char * to int )가 더 정확한 표현같음? C++에서는 string클래스에 의해서 문자열을 string으로 표현할 수 있는데, C언어에서는 string클래스가 존재하지 않기 때문에 char배열을 이용하여 ..