연산자 : 정적인 데이터를 유기적으로 행동하게 해 새로운 가치를 창출해 내는 것
- 산술연산자, 대입 연산자, 증감 연산자, 관계 연산자, 논리 연산자
분기문 (조건문)
- 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 배열 이름과 일반 포인터의 차이 = 배열의 이름은 주솟값을 갖는 포인터지만 상수! 따라서 주솟값 변경 불가
함수와 포인터
- 기본적인 함수의 인자 전달 형태 : 복사 (값에 의한 복사, 다른 메모리로 값이 복사돼 들어감 -> 용량 따로 차지)
- 배열 전달? -> 배열이름 사용 , 즉 포인터로! (참조에 의한 복사)
'데브코스 > 강의 정리' 카테고리의 다른 글
객체 지향, 추상화, 캡슐화, 클래스, 생성자, 상속성 (0) | 2024.10.28 |
---|---|
함수 포인터, 구조체, 열거형, 동적 메모리 할당 (0) | 2024.10.28 |
프로그래밍의 기본 원리-변수와 자료형 (1) | 2024.10.23 |
js 기초 (0) | 2024.10.22 |
js 기초 - 변수, 연산자, 함수 (0) | 2024.10.21 |