본문 바로가기

c & c++/c언어 기초 개념22

Call By Value, Pointer, Reference 1.Call by value (값에 의한 호출) main 함수에서 a 와 b의 값이 swap 되지 않음 2. Call by Pointer(address) 메인 함수에서도 swap이 이루어짐 ( 해당하는 변수의 주소값에 접근해서 참조하는 값을 바꾸기 때문, 원격조종) 3. Call by Reference 메인 함수에 선언되 a, b 변수에 m, n값을 참조해서 swap이 이루어짐 2022. 7. 28.
정수형 자료형 0 1 1 1 1 1 1 1 ==> 127 +1 0 0 0 0 0 0 1 ==> -127 ----------------------- 0 컴퓨터에서 음수는 양수에 더했을때 0이나오는 수로 생각한다. ex) 5 + (-5) = 0 10 + (-10) = 0 //음의 정수 찾기 (2의 보수법) //대응되는 양수의 부호를 반전후 , 1을 더한다 2022. 7. 28.
운영체제 솔수션 플랫폼 = 무언가가 실행될수 있는 기반 (Android, ios, window) window 운영체제(데이터 처리 단위) 4byte = 32bit = x86 8byte = 64bit = x64 요즘 게임 = 최소 사향 x64 2022. 7. 19.
정적변수(static), 외부변수(extern) 정적변수(static) = 선언되는 위치에 따라서 동작이 조금씩 차이는 있지만 공통적인 뜻차이는 변하지 않는다. 새로운 기능 이라기 보단 제한을 걸어주는것이 기능 전역변수와 다르게 파일 고유의 정적으로 선언된 변수임으로 Link에러(중복x)가 나지 않는다. c++ 문법 기준 static 변수 선언한 구문은 최초 한번만 실행하고 그이후부터 건너뛴다. 접근을 제한 함으로써 방어적 코드를 구현할 수 있다. (전역변수와 차이점) #include #include "func.h" static int i = 0; //정적변수 int global_i = 0; //전역변수 int test(); //함수선언 int main(void) { i = 50; test(); //함수호출 test(); test(); test(); .. 2022. 7. 19.
분할구현 function.cpp (실제 함수 구현) #include "function.h" int add(int a, int b) { return a + b; } function.h(헤더파일) #pragma once int add(int a, int b); //함수 선언 링크 하는 단계에서 함수가 중복될수 있으므로 함수 선언만 한다. main.cpp #include #include "function.h" // 헤더파일 int main(void) { int data; data = add(20, 30); return 0; } 분할구현 1. 장점 관리가 편하고 재사용이 편하다 2. 단점 모든 cpp파일을 합쳤을때 변수명이 다 겹쳐 어느 것을 말하는지 알 수 없다. 그로인해 링크 단계(LNK) 의 오류가 발생할 수 있다.. 2022. 7. 18.
지역변수, 전역변수 함수안에서 지역변수를 사용할때 변수가 증가 하지 않는다. #include //변수의 종류 // 1. 지역변수 (스택 영역) // 2. 전역변수 (데이터 영역) // 3. 정적변수 (데이터 영역) // 4. 외부변수 (데이터 영역) //메모리 영역 // 1. stack 영역 // 2. data 영역 // 3. heap 영역 // 4. 읽기 전용(코드, ROM) // 전역변수 int global = 0; //Data 영역 //Data 영역 틍직 //프로그램 시작 시 생성 // 프로그램 종료 시 해제 void Test() { int n = 0; ++n; } int main() { Test(); //n = 1 Test(); //n = 1 Test(); //n = 1 return 0; } 전역변수를 사용해서 함수.. 2022. 7. 18.
재귀함수(Recursive Function) 재귀함수(Recursive Function) = 자기 자신을 호출하는 함수 "Recursive" = 반복되는 장점 : 가독성, 구현의 용이 단점 : 성능이 떨어짐 ( 함수안에 남아있는 스택을 변수처럼 활용하기때문) 팩토리얼 구현 #include //재귀함수 //가독성, 구현의 용이 int Factorial(int count); int main(void) { return 0; } int Factorial(int count) { if (count == 1) { return 1; } return count * Factorial(count - 1); } 피보나치 수열 #include int Fibonacci(int count); int main(void) { int Value = Fibonacci(10); re.. 2022. 7. 18.
Visual Studio 단축키 #include int main() { int a = 300; printf("output"); return 0; } // 단축키 // 지정한 구문 주석 Ctrl + k, c // 지정한 구문 주석 해제 Ctrl + k, u // Alt Drag 필요한 영역만 // 디버깅 // 디버깅 시작 : F5 // 다음 중단점까지 코드 실행 // 중단점 생성 및 해제 : F9 // 디버깅 중, 구문 수행 : F10 // 디버깅 중, 구문 수행(함수 진입) : F11 // 디버깅 중, 디버깅 종료하기 : shift + F5 // 함수 원형 보기 : ctrl + shift + space // 해당 함수로 이동 : F12 2022. 7. 15.
변수 #include //변수 = 지역변수, 전역변수 ,정적변수 ,외부변수 //전역변수 int global = 0; int add(int a, int b); //함수선언 int main(void) { //지역변수 int i = 0 ; int a = 30; int b = 20; int c = add(a, b); printf("%d ", c); //괄호 안에 선언된 변수 (함수, 지역) { //변수명 규칙 int i = 100; i; //i = 100; } i; //위에 선언된 것으로 생각 i = 0; return 0; } //함수 int add(int a, int b) { return a+b; } 2022. 7. 14.
비트 연산자 //비트연산자 //쉬프트 //전처리 define //전처리 = 본 프로그래밍 소스코드 작성 및 컴파일을 하기 전에 하는 작업들을 일컫습니다. #define HUNGRY 1 //define을 사용하면 좋은점 #define THIRSTY 2 //1. 가독성 #define TIRED 3//2. 유지보수 #include int main(void) { unsigned char byte = 13; byte = 1; // 2^n 나눈 몫 printf("%d ", byte); //비트 곱(&), 합(|), xor(^) 반전(~) //비트 단위로 연산을 진행, //& 둘다 1인 경우 1 // | 둘중 하나라도 1이면 1 // ^ 같으면 0, 다르면 1 // ~1 = 0, 0 = 1 unsigned int iStatus .. 2022. 7. 14.
문자열형 상수(const char*) #include #define COUNTRY "대한민국" #define CUTE "This is cute" const char* soccer = "나는 축구를 좋아합니다."; int main(void) { printf("문자열 상수 COUNTRY : %s \n", COUNTRY); printf("문자열 상수 CUTE : %s \n", CUTE); printf("문자열 상수 SOCCER : %s \n", soccer); return 0; } 문자열 상수 COUNTRY는 상수이기 때문에 프로그램의 어디에서도 변경될 수 없다. 문자열 상수 CUTE는 상수이기 때문에 프로그램의 어디에서도 변경될 수 없다. 문자열 상수 soccer 값 또한 상수이기 때문에 프로그램 어디에서도 변경될 수 없다. const char.. 2022. 6. 30.
문자열형 변수(char*) #include int main(void) { char string[30] = "개발자로 끊임없이 성장하자"; char *p = "I love coding"; printf("문자열형 변수 string = %s \n ", string); // %d로출력하면 string의 시작 주소 출력 printf("문자열형 변수 p = %s \n", p); // %d로 출력하면 p가 가리키고 있는 주소 출력 return 0; } 문자열을 정의하는 방법 = char [ ], char* 두가지의 차이점 string = 문자열 변수 p = 문자열 상수 ("I love coding")의 시작주소 문자열과 메모리의 구조 'I' ' ' 'l' 'o' 'v' 'e' ' ' 'c' 'o' 'd' 'i' 'n' 'g' '\0' ↑ ch.. 2022. 6. 30.