반응형

C | C++ 12

[C++] 캐스팅(Casting)

일반적인(C 스타일) 캐스팅의 문제 C언어에서 사용되는 일반적인 캐스팅은 다음과 같이 사용합니다.(변환형)변수 위와 같이 매우 간단하게 특정 변수의 명시적으로 자료형을 변환할 수 있습니다. 하지만, 일반적인 캐스팅에는 사소한 문제점이 존재합니다.컴파일 타임에 타입 변환 유효성 체크하지 않음 -> 근원을 알기 힘든 런타임 오류를 발생시킬 가능성이 있음특히 포인터 관련 자료형에 대한 캐스팅 시에 추적이 어려움 -> 의도를 알기 어려움 -> 디버깅 어려움거의 모든 자료형으로 변환 가능 -> 안전성 부족, 오류 발생 가능성 증가 위 문제들을 해결하기 위해 C++에서는 더 안전하고 명시적인 캐스팅을 위해서 또다른 Cast 연산자를 제공합니다.C++ 캐스팅 연산자 C++에서는 다음과 같은 4가지 Cast 연산자를 ..

C | C++/Basic 2025.01.30

[C++] 포인터 기초 2 - 포인터 배열

포인터와 배열의 관계 일반 배열을 나타낼 때에는 다음과 같이 작성합니다.int ary[5] = { 1, 2, 3, 4, 5 }; // 일반 배열 이때 배열 변수의 이름, 즉 ary는 ary의 첫번째 요소의 주소를 가진 포인터와 같습니다. 따라서 다음과 같은 결과가 나타납니다.int ary[5] = { 1, 2, 3, 4, 5 };printf("%d", *ary); // 1을 출력합니다 포인터는 +/- 연산이 가능한데, 일반적인 +/-연산과 다르게 포인터의 +/- 연산은 데이터 형식의 크기를 기준으로 계산합니다.char chs[5] = { 'A', 'B', 'C', 'D', 'E' };printf("%p / %p\n", chs, (chs + 1));// chs 주소와 chs+1 주소의 차이는 char의 크..

C | C++/Basic 2025.01.25

[C] 파일 입출력

파일의 입출력C언어는 표준 라이브러리에서 파일 입출력 함수를 제공합니다.파일 포인터 (FILE*)C언어에서는 파일 포인터를 이용하여 파일을 읽거나 씁니다.FILE* fp;파일 포인터는 다음과 같이 선언합니다.파일 포인터는 메모장을 열었을 때의 커서의 위치를 나타내는 것과 비슷한 역할을 합니다.파일 모드표기법설명포인터 위치텍스트 파일"r"읽기 모드로 파일을 엽니다.처음 부분"w"쓰기 모드로 파일을 엽니다. 파일이 없으면 새로운 파일을 생성하고 파일이 이미 있으면 기존 내용을 모두 지우고 처음부터 씁니다.처음 부분"a"추가 모드로 파일을 엽니다. 파일이 없으면 새로운 파일을 생성하고 파일이 이미 있으면 기존 내용의 끝부터 씁니다.끝 부분"r+"읽기와 쓰기 모드로 파일을 엽니다.처음 부분"w+"읽기와 쓰기 모..

C | C++/Basic 2022.11.04

[C] 열거형(Enumeration)

열거형 (Enumeration) 열거형은 여러 상수 값이 열거된 자료형으로 프로그래밍에서 가독성과 직관성을 높이기 위해서 사용합니다. 열거형은 사용자 정의 자료형으로 필요한 만큼 정의하여 사용할 수 있습니다. 예를 들어, "앞, 뒤, 왼쪽, 오른쪽"을 나타내는 방향을 저장하는 변수가 필요하다고 하면 정수, 실수, 문자 자료형을 이용하여 이를 표현할 방법을 마련해야 합니다. int direction = 0; // 0 : 전 // 1 : 후 // 2 : 좌 // 3 : 우 다음과 같이 정수 자료형을 이용하여 각 숫자에 의미를 부여하는 방법이 있지만 만약 프로그램이 더 복잡해지고 다른 사람이 이 코드를 본다면 한눈에 이해하기에는 어려움이 있을 것입니다. enum Direction { Front, Back, L..

C | C++/Basic 2022.10.08

[C] 구조체(Structure)

구조체 (Structure) 구조체는 서로 다른 자료형을 갖는 데이터들을 하나로 묶어 놓은 자료형으로 내부 데이터는 사용자가 직접 필요한 것만 필요한 만큼 서로 다른 데이터를 지정하여 사용할 수 있습니다. 예를 들어, 사람에 대한 정보를 담는 데이터에는 char배열의 이름, int형의 나이, float형의 키와 몸무게 등의 여러 데이터가 필요합니다. char name[10] = "Hyeok Jun"; int age = 20; float height = 175; float weight = 65; 다음과 같이 사람 정보를 담는 데이터를 하나씩 선언할 수 있지만 10개, 100개, 그 이상의 여러 사람 데이터를 생성한다고 하면 프로그램이 복잡해질 것입니다. char name[100][10]; int age[1..

C | C++/Basic 2022.09.17

[C] 비트 마스크와 진수 변환

비트 마스크 (Bit Mask) 비트(Bit)는 어떤 자료를 표현하는 최소 단위로 0과 1로만 표현할 수 있습니다. 이를 사용하는 방식은 자료의 형식(숫자, 이미지, 문자 등)에 따라 다릅니다. 비트 마스크(Bit Mask)는 특정 위치의 비트 값을 알아내는 알고리즘으로 이 과정을 비트 마스킹(Bit Masking)이라고 합니다. 비트 마스킹은 C의 비트 논리 연산자 &(AND)를 이용합니다. 예를 들어 7(00000111)이라는 수의 세번째 비트 값을 구하기 위해서 아래와 같이 세 번째 비트 값만이 1인 4(00000100)를 이용하여 구합니다. 0000 0111 & 0000 0100 = 0000 0100 다른 예제도 살펴보면 67의 세번째 비트 0100 0011 & 0000 0100 = 0000 00..

C | C++/ETC 2022.06.21

[C] 포인터 기초 1 - 간접 연산자(*)와 주소 연산자(&)

간접 연산자(*)와 주소 연산자(&)포인터 변수는 어떤 변수가 데이터가 저장된 주소를 가리키는 변수입니다. 간접 연산자(*)는 변수의 선언에서 사용될 때와 아닐 때의 작동 방식이 다른데변수의 선언에서 간접 연산자는 해당 변수가 포인터 변수라는 것을 명시하는 표시이고변수의 선언이 아닐 때의 간접 연산자는 주소를 해당 데이터로 변환해주는 기능을 합니다. 주소 연산자(&)는 어떤 변수가 저장된 주소를 반환하는 연산자입니다.따라서 아래와 같이 간접 연산자와 주소 연산자는 같이 쓰는 것이 일반적입니다.int number = 123;int *number_ptr = &number;// number_ptr은 정수형 포인터 변수임을 명시하고 number의 주소를 저장합니다.// 따라서 number와 *number_ptr..

C | C++/Basic 2022.06.18

[C] 조건문과 반복문

조건문 if 문 if 문은 어떤 조건의 참과 거짓을 판별하여 코드를 실행하는 문법입니다. if 문의 기본 구조는 다음과 같습니다. if(조건식) // 조건식이 참일 경우에만 { ... }를 실행합니다. { // 명령문 } else if(조건식) // 위 if 문이 거짓일 경우에 조건을 확인하여 실행합니다. { // 명령문 } else // 위의 if 문의 조건식이 모두 거짓일 경우에 실행합니다. (반드시 if문의 마지막에 옵니다.) { // 명령문 } int score = 70; if(score >= 100) // score가 100점 이상일 경우 { printf("만점\n"); } else if(score >= 70) // score가 100점 이상이 아니고 70점 이상일 경우 { printf("합격\..

C | C++/Basic 2022.04.25

[C] 표준 입출력

stdio.h (Standard Input Output library) stdio.h는 C언어의 표준 라이브러리 함수의 매크로 정의, 상수, 여러 자료형의 입출력 함수가 포함된 헤더 파일입니다. 대표적인 함수로 printf, scanf 함수가 있으며 이 기능을 사용하기 위해서는 다음과 같이 소스코드에 해당 헤더 파일을 포함해야 합니다. #include // stdio.h 헤더파일을 포함합니다. stdio.h와 같은 헤더 파일을 포함하기 위해서는 위와 같이 #include를 통해 헤더파일을 포함시킵니다. printf() printf 함수는 표준 출력장치인 모니터에 데이터를 출력하는 함수입니다. printf 함수의 기본 형식은 다음과 같습니다. printf("서식 문자열", 변수나 식...); printf(..

C | C++/Basic 2022.04.15

[C] 변수와 자료형

키워드 (Keywords)키워드는 C언어에서 고유한 의미를 갖는 단어로 식별자로 사용할 수 없으며 각 키워드는 프로그램에서 특별한 기능을 수행합니다.autodogotosignedunsignedbreakdoubleifsizeofvoidcaseelseintstaticvolatilecharenumlongstructwhileconstexternregisterswitchcontinuefloatreturntypedefdefaultforshortunion다음은 32개의 C언어 키워드입니다.* 예약어(Reserved Word)라고도 합니다.식별자 (Identifier)식별자는 변수, 상수, 함수의 이름 등 사용자가 직접 정의한 데이터로 정의할 때 다음과 같은 규칙이 있습니다.- 영문 대소문자, 숫자, 언더바(_)로만 ..

C | C++/Basic 2022.04.15
반응형