데브코스/강의 정리

연산자, 조건문, 반복문, 함수, 변수의 범위, 배열, 포인터

케케_ 2024. 10. 24. 19:08

연산자 : 정적인 데이터를 유기적으로 행동하게 해 새로운 가치를 창출해 내는 것

 - 산술연산자, 대입 연산자, 증감 연산자, 관계 연산자, 논리 연산자

 

분기문 (조건문)

 - if문 , if-else문 , if-else if문

 

반복문

 -while문, for문, break, continue

 

함수

 - 나누어 처리하기 위한 목적

 - 가독성 향상 / 유지 보수 및 확장 용이

 

표준함수 : 언어에서 기본적으로 제공해주는 함수

함수를 라이브러리화 시켜 편리하게 사용 가능

 

사용자 정의 함수 : 사용자가 직접 원하는 기능을 만듦

 

void 타입 : 결과값을 리턴하지 않는 함수

 

변수의 범위

- 지역 변수

  - 함수의 매개변수도 스택 메모리에 할당되는 지역 변수이다.

  - 함수 호출 순서와 소멸 순서는 반대

 

- 전역 변수 : 함수 바깥 쪽에 선언된 변수

  - 프로그램 시작하자마자 메모리 상에 올라가 프로그램 종료될 때 메모리에서 소멸 (데이터 영역에 저장 , 즉 스택 X)

 

static 변수 : 지역 변수 + 전역 변수

- 지역 변수처럼 중괄호 안에서 선언, 하지만 중괄호를 벗어나도 메모리 상 고정돼 소멸하지 않음

- 전역 변수와의 차이는 메모리에 할당, 생성 시작 시점 -> static는 함수 생성 시 생성 됨

 

배열 

: 같은 속성을 가진 것들을 나열해 놓은 것

ex) int array[5]= {1,2,3,4,5}

 

배열 선언 구조

- 타입 : 배열의 요소들의 타입을 나타냄

- 이름 : 각 배열 요소에 접근하기 위해

- 길이 : 변수의 개수

  - 생략 가능 : 초기값의 갯수를 보고 컴파일러는 배열의 길이를 계산

- 인덱스는 0부터

- 배열의 복사

  - 같은 타입끼리 복사 가능 -> 배열도 배열끼리

  - 대입 연산자를 이용해 X(에러 발생) => 요소끼리 복사해야함

  => for문과 같이 루프를 돌며 각 요소에 접근 후 복사

 

문자열 변수

ex) char str[12] = "hello world";

 

- 문자열에 이름을 붙여주면 변수로 사용 가능

- 문자열 끝에 null 문자가 추가됨

   왜? ex) char str[100] = "Beautiful"

   - 남은 91개의 공간?

   - 컴퓨터가 문자열의 끝을 인식하기 위해 null 표시

   - Beautiful의 공간은 9개가 아닌 null 을 포함해 10개

 

 

포인터

메모리는 주소를 통해 메모리에 접근해 값을 읽고 쓸 수 있음

포인터 : 포인터 변수의 줄임말로, 메모리 주소값을 저장하고 있는 변수 = 해당 메모리를 가리킴

 -> 특정 메모리 주소를 가리키거나 향하고 있음

왜 사용? 해당 메모리를 장악 = 간접참조 (원격 데스크탑처럼)

char * pA;

int c = 100;

int *pB = &b; //&=주소값

 

 

포인터와 배열

배열의 이름 : 해당 배열의 첫번째 요소의 주솟값을 갖음 -> 첫번째 요소의 주솟값을 가리키는 포인터임

ex) arr = &arr[0]

 

배열의 이름 == 포인터

but 배열 이름과 일반 포인터의 차이 = 배열의 이름은 주솟값을 갖는 포인터지만 상수! 따라서 주솟값 변경 불가

 

 

함수와 포인터

- 기본적인 함수의 인자 전달 형태 : 복사 (값에 의한 복사, 다른 메모리로 값이 복사돼 들어감 -> 용량 따로 차지)

- 배열 전달? -> 배열이름 사용 , 즉 포인터로! (참조에 의한 복사)