[ 흥달쌤 유투브 강의 정리 ]
(1강) 프로그래밍이란?
* 프로그래밍 동작 과정 : 선언 > 입력 > 처리 > 출력
* scanf() : 입력받는 함수. scanf("%d%d, &age1, &age2);
* & : 주소연산자, 변수의 주소를 반환
(2강) 컴파일러, 인터프리터
* 컴파일이란?
- 인간이 만든 고급언어를 컴퓨터가 해석할 수 있는 저급언어로 번역.
* C언어 컴파일 과정
.c == 전처리기 ==> .i == 컴파일러 ==> .s == 어셈블러 ==> .o == 링커 ==> .exe(실행파일)
- 전처리기 : 전처리 구문을 처리하는 과정 Ex) #include<stdio.h> (확장자 : .c )
- 컴파일러 : 고수준언를 저수준 언어로 변환, 기계어와 가장 가까운 형태의 언어 (확장자 : .i )
- 어셈블러 : 완전히 기계어로 바꾸어 주는 역할 (확장자 : .o )
- 링커 : 여러 개의 오브젝트 파일을 합치거나, 라이브러리를 합치는 역할 (확장자 : .exe )
* 컴파일러
- 고급언어로 작성된 프로그램을 컴퓨터에서 실행하기 위해 컴퓨터가 이해할 수 있는 언어로 번역.
- 전체를 번역하므로 번역시간이 오래 걸리지만, 한 번 번역한 후에는 다시 번역하지 않으므로 실행 속도가 빠름.
- 종류 : C, C++, JAVA 등
* 인터프리터
- 고급언어로 작성된 프로그램을 한 줄씩 읽어 들여서 실행하는 프로그램 (통역)
- 번역과 실행이 동시에 이루어지므로, 별도의 실행파일이 존재하지 않음.
- 종류 : Ruby, php, javascript, Basic
(3강) 변수
* 변수 : 데이터를 저장할 수 있는 메모리의 기억공간.
그릇 밥상
* 변수생성 규칙 및 특징
- 예약어(키워드)는 사용할 수 없다.
- 공백을 포함할 수 없다.
- 첫 글자는 영문과 언더바(_)만 사용이 가능하다. (숫자X)
- 언더바(_) 이외의 특수문자는 사용할 수 없다.
- 대소문자를 구분한다. (Java, C)
* 데이터 타입(자료형)
* 변수 선언
Int 변수명; Int age;
Int 변수명 = 초기값; Int age = 4;
(4강) 변수의 종류와 유효범위
* 지역변수
- 함수/블록 안에서 선언하는 변수
- 함수/블록의 종료와 함께 메모리상에서 소멸
- 초기값이 없으면 쓰레기 값이 들어감
- 스택 영역에 저장됨
=> num1이라는 변수는 if문(블록)내에서 선언했기 때문에 블록 밖에서 출력 불가
* 전역변수
- 함수 블록 밖에서 선언하며 전체 함수에 영향을 미친다.
- 프로그램이 종료될 떄 메모리상에서 소멸
- 초기값이 없으면 0값이 들어감
- 데이터 영역에 저장됨
출력결과
=> 1020
* 정적변수
- static으로 선언하며 선언된 블록 내에서만 사용가능
- 함수가 종료되어도 소멸되지 않고, 값이 그대로 유지됨
- 프로그램이 종료될 때 메모리상에서 소멸
- 초기값이 없으면 0이 입력되고, 단 한번만 초기화
- 데이터 영역에 저장됨
출력결과
=> sum : 10
sum : 15
sum : 18
* sum이 static으로 선언되지 않았다면
=> sum : 10
sum : 5
sum : 3
* 동적변수 _ 그때그때 만들어지는거
- 메모리 동적할당으로 생성되는 변수
- Run time 시간에 메모리를 할당
- 동적 기억장소에 할당하여 메모리 낭비를 피하려는 목적
- 무조건 포인터를 사용해야 함
- 힙 영역에 저장됨
* 프로그램의 실행 시작 시점에 기억장소를 할당받아 실행이 끝날 때까지 지속적으로 기억장소를 유지
=> 전역변수, 정적변수
(5강) 산술연산자
* 산술연산자 종류
1) 3 / 4 = 0
2) a = 10;
b = a++;
c = ++a
=> b : 10
c : 12
3) a = 10;
a += 10;
=> a = ( a + 10 ) 20
=> 0 (a=1, b=0)
(6강) 연산자 우선순위
* 산술연산자 종류
int a = 3;
int b = 4;
int c = 5;
int d = 6;
1) a * b + c >= d && d / a - b != 0 = 1 (True)
True && True
2) d % b + ++a * c-- = 22
2 + 20 (c는 연산 이후 --적용)
2-1) d % b + a++ * c-- = 17
2 + 15 (a, c는 연산 이후 각각 ++, --적용)
=> 40 6
(7강) 관계/논리연산자, 조건문
* 관계연산자 종류
* 논리연산자 종류
* 조건문
- 단순 if문
- if ~ else 문
- 다중 if문
=> 3 ( i = 3, j = 2 )
* if문에서 &&앞의 첫번째 조건식만 판별 후 else로 넘어가 연산계속 *
(8강) 논리연산자, 증감연산
=> 9 3 0 8 2
a = 8 > 9
b = 1 > 3
c = 0
ap = 8
bp = 2
'정보처리기사 > c언어강의' 카테고리의 다른 글
[C언어(강의)] 19강~20강 (for, continue, break, 다중for문) (0) | 2024.06.22 |
---|---|
[C언어(강의)] 14강~18강 (if문, switch문, 반복문, for문, while문, do~while문) (0) | 2024.06.02 |
[C언어(강의)] 12강~13강 (매크로, 비트연산, 삼항연산자) (0) | 2024.06.02 |
[C언어(강의)] 11강 (진법변환, 비트연산) (0) | 2024.05.25 |
[C언어(강의)] 9~10강 (산술연산자, 출력형식) (0) | 2024.05.15 |