-
윤성우 열혈 C ppt 정리본(chapter 1 ~ chapter 16)PROGRAMMING/C++ 2023. 12. 18. 07:36
윤성우님이 네이버 카페에 올려준 C ppt도 유용한 것만 정리해보고자 한다.
강의 자료를 통으로 공유해주신 윤성우님 짱
(혹시 저작권에 문제가 있다면 수정하겠습니다!! 개인적인 공부용으로 정리함을 알려드립니당)
https://cafe.naver.com/cstudyjava
후위 연산자 예시
int num1 = 10; int num2 = (num1--) + 2; std::cout << num1 << num2 /// 출력 결과 9 12
기본 자료형의 종류와 크기
자료형 크기 값의 표현범위(a이상 b이하) 정수형 char 1바이트 -128 ~ +127 short 2바이트 -32,768 ~ +32,767
(3e04)int 4바이트 -2,147,483, 648 ~ +2,147,483,647
(2e9)long 4바이트 long long 8바이트 -9,223,372,036,854,775,808 ~ + 9,223,372,036,854,775,807
(9e18)실수형 float 4바이트 대략 3.4e-37 ~ 3.4e37 double 8바이트 대략 1.7e-307 ~ 1.7e307 long double 8바이트 이상 double 이상의 표현 범위 double형 변수의 출력 서식문사 %f
double형 변수의 입력 서식문자 %lf
메모리 공간에 저장이 되어야 CPU의 연산대상이 된다.
do-while과 while
do-while은 반복조건을 반복문의 가장 마지막에 진행하기 때문에 최소한 1회는 반복영역을 실행하게 된다.
do { printf("Hello World! \n"); num++; }while(num<3)
C++ 삼항연산자 (if-else 대신 사용)
result = (a<b) ? a : b
1. a < b가 참인 경우 : result = a
2. a < b가 거짓인 경우 : result = b
break, continue, switch
break문은 자신을 감싸는 반복문 하나를 빠져나간다.
continue문은 반복문을 빠져나가지 않는다. 다만 반복조건을 확인하러 올라갈 뿐이다. 그리고 반복조건이 여전히 참이라면 반복영역을 처음부터 다시 실행한다.
///switch문의 기본적인 포멧 /// enum으로 숫자 대신 순서를 정해주면 코드의 가독성 UP enum = {Start = 1, Stop, Continue, Finish} switch(n){ case 1: /// case Start: ~ break; ///break문이 없으면 아래부분도 쭉 실행하게 됨 case 2 : /// case Stop: ~ break; default: ~ }
return의 기능
1. 값의 반환
2. 함수의 탈출 - 아래와 같은 형태로 자주 쓰이며 특히 재귀함수에서 자주 보인다.
if(~): return;
변수 특징
- 매개변수는 지역변수의 일종이다.
전역변수
1. 프로그램 시작과 동시에 메모리가 할당되며 종료시까지 존재한다.
2. Default : 0으로 초기화된다.
3. 지역변수 이름이 전역변수 이름을 가린다.
4. 어디서든 접근 가능하다.
👉🏻 그럼에도 자주 쓰는게 좋은 게 아니다!
전역변수의 변경이 전체 프로그래밍 변경으로 이어질 수도 있기 때문에 생각해야 할 부분이 많다!
static 변수 - 전역변수 특징 + 지역변수 특징
(전역변수 특징)
1. 프로그램 시작과 동시에 메모리가 할당되며 종료시까지 존재한다.
2. Default : 0으로 초기화된다.
(지역변수 특징)
1. 접근범위가 선언된 함수 내로 한정된다.
👉🏻 static 변수 Win!!!
static 변수가 전역변수보다 접근 범위가 훨씬 좁기 때문에 안정적이다.
register 변수
register int num = 3;
register 변수는 빈번히 호출할 변수 등을 저장해 접근이 가장 빠른 리지스터에 저장한다.
배열의 길이계산
arrlen = sizeof(arr) / sizeof(int)
Null문자와 공백
아스키 코드 비고 Null 문자 0 char 배열의 마지막 문자 공백 32 문자열과 문자배열의 차이(string와 char[]의 차이)
https://powerofsummary.tistory.com/68
자료형 마지막에 NULL문자
저장 여부비고 string 객체
C언어에는 없고, C++에서 제공하는 클래스X char c[] = "app\0le"
출력시 app까지만 출력됨char[] 기본 자료형 O 포인터
- type * ptr : type형 변수의 주소값을 저장하는 포인터변수
(포인터도 변수라고 불리는게 좀 신기..😏)
- 잘못된 포인터 사용을 막기 위해 NULL포인터로 초기화하는 것이 안전하다.
int * ptr = NULL;
- 배열의 이름도 배열의 시작 주소를 의미하는 포인터로 메모리 접근이 가능한 *연산 기능이 가능하다.
int arr[3] = {1, 2, 3}; /// 아래 두 줄은 완전히 동일한 의미 int * ptr = &arr[0]; int * ptr = arr;
- type형 포인터 변수 대상의 증가, 감소 연산시 sizeof(type)의 크기만큼 값이 증가 및 감소한다.
arr[i] = *(arr+i)
char str1[] = "My String" /// 문자배열 - 변수 성향의 문자열 char *str2 = "Your String" /// 문자열의 주소값 - 상수 성향의 문자열
배열의 복사
배열을 통째로 복사하는 방법이 C에는 없다. 따라서 배열의 주소값을 전달해야 한다.
C++에서는 strcpy를 사용하면 string 복사가 가능하다.
함수 선언시 배열 포인터
함수를 선언할 때만 동일한 표현으로 오른쪽 방법을 추천한다.
Func(int * param, ... ) == Fun(int param[], ...)
scanf와 &
int num; scanf("%d", &num);
scanf 함수 내에서 외부에 선언된 변수 num에 접근하기 위해서는 num의 주소 값을 알아야 한다.
char str[]; scanf("%s", str);
str은 배열의 이름이고, 그 자체가 주소 값이기 때문에 & 연산자를 붙이지 않는다.
const와 포인터
const int *ptr = #
포인터 변수 ptr을 이용해서 ptr이 가르키는 변수에 저장된 값을 변경하는 것을 허용하지 않는다.
그러나 num에 저장된 값 자체의 변경이 불가능한 것은 아니다.
int * const ptr = #
포인트 변수 ptr에 저장된 값을 상수화한다.
ptr이 가르키는 대상의 변경은 허용하지 않는다.
2차원 배열과 3차원 배열
2차원 배열 : type arr[x = 세로길이][y = 가로길이]
3차원 배열 : type arr[z = 높이][x = 세로길이][y = 가로길이]
이중포인터
: 포인터 변수의 주소값을 저장한다. (포인터 swap함수를 만들 때 사용!)
int * ptr = # int **dptr = &ptr;
int arr[20] /// 1차원 배열, arr = int형 포인터(int *) int *parr[20] /// 1차원 배열, parr = int형 이중포인터(int **)
'PROGRAMMING > C++' 카테고리의 다른 글
SwapPointer(포인터가 가리키는 대상이 서로 바뀌도록 하는 함수) 윤성우의 열혈 C++ 문제 2-1-3 (0) 2023.12.26 윤성우 열혈 C++ 프로그래밍 3장) 클래스의 기본(struct와 class, private와 public, 파일분할, 객체지향 프로그래밍) (1) 2023.12.22 윤성우 열혈 C++ 프로그래밍 2장) C언어 기반의 C++ 2(bool형 자료형, 참조자, const, new&delete) (2) 2023.12.20 윤성우 열혈 C ppt 정리본(chapter 17 ~ chapter 30) (2) 2023.12.19 윤성우 열혈 C++ 프로그래밍 1장) C언어 기반의 C++ (0) 2023.12.13