본문 바로가기

C언어 기초

(10)
[뇌를 자극하는 STL] 1장 . 연산자 오버로딩 연산자 오버로딩 : c++에서 제공하는 기본 타입이 아닌 : 클래스, 사용자 정의 타입에도 연산자를 사용할 수 있게 하는 문법 >>연산자 오버로딩의 핵심 : 클래스 타입(사용자 정의 타입)의 객체에 연산자 사용 == > 컴파일러가 정의된 함수를 호출 ex) 식 : p1+p2 해석 : p1.operator+(p2) ex) 연산자 오버로딩 operator+()의 예시 #include using namespace std; class Point { private: int x; int y; public: //생성자 Point(int _x=0, int _y=0): x(_x), y(_y){} void Print() const { cout > 연산자 오버로딩의 방법 2가지 1) 멤버 함수를 이용한 오버로딩 2) 전역함..
[CPP] strcpy_s - L buffer is too small 자주 하는 실수라 스크랩 해놓자. strcpy_s는 c언어에서 문자열을 복사하는 기능을 한다. strcpy_s(옮길 변수, 공간의 크기, 붙여넣을 문자열) 로 사용되는데 여기서 공간에 크기에 sizeof(포인터)가 들어가면서 문제가 생김 (나는 문자열 공간의 크기를 넣어주었다고 착각) 포인터의 byte 크기 != 문자열 공간의 byte크기이다. 예시) => sizeof(포인터가 가르키는 공간)=20byte => sizeof(포인터)= 4byte 이 상황에서 sizeof(str)은 20바이트가 아닌 4byte가 됨 문제 해결방법1. 직접 상수를 넣기 문제 해결방법2. strlen을 이용해 길이값 변수 넣기 참고) https://stackoverflow.com/questions/46994332/strcpy-..
[열혈 C] 도전 프로그래밍2 문제풀이 >> 도전1 => 도전 1 출력값 >>도전2. => 도전 2 출력값 - 배열을 넘어가는 10진수 값이 입력되면?? >>도전3. => 도전 3 결과 >>도전4. => 도전 4 결과 >> 도전5. => 도전 5 결과
[C언어] switch - goto문 1. Switch vs if -else - 조건의 분기가 많을 때 switch문이 더 간결 - but, switch로 사용가능한 조건구성에는 한계가 있음 => 더 복잡한 조건에는 if-else if -else 문이 더 알맞음 2. Switch문 기본구성 주의사항 1. 레이블 뒤에는 콜론(:)이 온다 2. break로 흐름을 분기하자 (안하면 밑의 코드 다 실행됨) 3. default는 if문의 else와 같다 3. switch -goto goto문 : 프로그램의 흐름을 원하는 위치로 이동시킬 때 사용 => 현재는 사용에 부정적임
chapter 4 : 데이터 표현방식의 이해 1) 정수 데이터의 진법 표현 8 진법 : 0으로 시작 10진법 : 별다른 표현법 필요x 16진법 : 0x로 시작 2) 정수 & 실수의 표현방식 >> 정수의 표현 방식 fact1) 정수의 가장 왼쪽의 존재하는 비트(MSB)는 '부호비트'이다 - (+,-)의 부호를 표시 : 양수면 0 / 음수면 1 - MSB를 제외한 비트들 : 정수의 크기를 나타냄 fact2) 음의 정수를 표현할 때에는 2의 보수를 취해야 한다. - 2의 보수 : 반전시킨 후, 1을 더해줌 - 올림수가 버려져서 0으로 ㅏ가득차게 됨 >> 실수의 표현 방식 fact1) 실수 표현의 정밀성은 떨어진다 - 넓은 범위의 실수를 표현가능하나, 실수 표현에는 오차가 존재함 => 가까운 근사치를 활용 - 부동소수점 : 부동소수점 표현방식이 지니는 근..
chapter 3. 변수, 연산자, scanf 함수 3-1. 연산을 위한 연산자 / 값의 저장을 위한 변수 연산자 : C언어를 이용해 특정 연산을 요구할 때 사용하는 약속된 기호 int num; // num이라는 변수의 선언 num=12; // 변수 num을 12로 초기화 => 변수를 선언만 하고 초기화하지 않으면 쓰레기 값이 들어감 #변수 선언시 주의해야할 사항들 1) 되도록 중괄호의 앞부분에 위치 2) 변수의 이름은 대소문자를 구분함 => 변수 Num 과 변수 num은 서로 다른 변수임 3) 변수의 이름은 역할에 어울리는 의미 있는 이름을 지어야 함 >> 변수의 자료형 - 정수형 변수 : char, int, short, long - 실수형 변수 : double, float 3-2. C언어의 다양한 연산자 소개 - 대입연산자(=)와 산술 연산자(+, -..
2-2/3 : C언어 주석/ printf 함수 알아보기 2-2. C언어 주석 주석 : 프로그램 내 삽입된 메모 => 실행결과에 영향을 미치지 않음 방법1. 블록단위 주석 : /* */ /*주석 처리된 문장 */ /* 주석 처리된 문장1 주석 처리된 문장2 주석 처리된 문장3 */ 방법2. 행단위 주석 : // // 주석처리된 문장1 // 주석처리된 문장2 // 주석처리된 문장3 # 주석처리 시 주의할 점 1) 블록단위 주석은 중첩될 수 없음 1. /* 2. 주석처리된 문장1 3. /* 단일 행 주석처리 */ 4. 주석처리된 문장2 5. */ => 3행의 */ 만나면 주석 끝 => 5행의 */을 잘못삽입된 것으로 생각하여 컴파일 오류 2) 행 단위 주석은 블록단위 주석 내부에 포함 가능 1. /* 2. 주석처리된 문장1 3. //단일 행 주석처리 4. 주석처리..
chapter 2-1. 프로그램의 기본구성 2-1) Hello world! 들여다보기 >> hello world를 출력하는 프로그램으로부터 >> C언어의 기본 특성 몇가지를 끌어내보자 # C언어의 기본단위인 '함수'의 이해 함수1 : 3x+4=y 위 함수에서 x에 2를 대입하면 y는 10이다. 여기서 들어가는 2라는 값은 '입력'이고 그 결과로 얻게 되는 y의 값을 '출력'이라고 한다. 그리고 적절한 '입력'과 '출력' 이 존재하는 것이 '함수'다. => C언어의 함수 용어 몇가지를 알아보자 1) 함수의 정의 : 만들어진 함수 or 실행이 가능한 함수 2) 함수의 호출 : 함수의 실행을 명령하는 행위 3) 인자의 전달 : 함수의 실행을 명령할 때 전달하는 입력 값 # 예제 'hello world!'에서 함수는 어디에? >> 함수의 정의: 출력형태..