assortrock

c++ 3일차

solie75 2022. 5. 12. 21:57

1. 반복문(iteration statement/loop)

 

while, do while

구문

 

while(조건문)
{
	구문;
}

조건문이 참일 때 구문을 실행하고 후에 while이 종료되는 것이 아니라 다시 조건문의 참/ 거짓 여부를 판별하는 단계로 돌아가 진행한다.

 

do {
	구문;
} while( 조건문 )

최소 반드시 1회 실행하고 조건 체크 진행

 

for

구문

 

for( 변수(선언) ; 조건식 ; 변수에 대한 변경사항 ){
	구문;
}

첫 번째에 기존의 변수를 가져오거나 새로운 변수를 선언한다.

이 변수의 값이 조건식에 대해 참일 때 구문을 실행하고 거짓이면 for 문을 종료한다.

구문이 실행되면 변수에 대한 변경사항을 적용한다.

변경사항이 적용된 변수가 조건식에 대해 참이면 다시 구문을 실행하고 거짓이면 for 문을 종료한다.

이때 for문 내의 선언된 변수는 지역 변수로 for문 외부에 변수명이 중복되더라도 같은 것으로 취급 하지 않는다.

 

 

2. printf( ) 함수

출력에 관한 함수

 

활용

기본형

printf("");

쌍따옴표 사이의 문자열을 출력한다.

 

변수 대입

int a = 0 ;
printf("%d", a);

// 예상 출력 값
// 0

쌍따옴표 사이의 %d 와 같은 문자를 '서식 지정자(서식 문자)' 라고 한다.

 

 

 

여러 변수 대입

int a = 4;
float b = 4.f;
printf("%d\n %f", a, b);

// 예상 결과 값
// 4 
// 4.000000

여러개의 변수를 한 printf에서 출력할 수 있다. (대입하는 변수는 콤마로 구별한다.)

쌍따옴표 사이의 \(역슬래쉬)n은 줄바꿈을 실행한다.

이때 '\n'과 같은 문자를 이스케이프 시퀀스(escape sequence)라고 한다.( 프로그램의 결과가 화면에 출력될 때 사용하게 될 특수 문자를 위해 만들어짐)

각 자료형에 맞는 서식 지정자를 사용해야 한다.

 

3. 배열(array)

같은 타입의 변수들로 이루어진 집합.

구성하는 각 값을 배열 요소(element)라고 한다.

인덱스로 각 배열을 가리킨다. (이때 인덱스는 0부터 시작한다.

자료형 배열이름[배열길이];

자료형은 각 요소로 들어가는 변수의 타입을 명시한다.

배열을 선언만 하고 초기화하지 않으면, 각 배열 요소에 쓰레기 값(랜덤 값)이 저장됨

자료형 배열이름[배열길이(n)] = {요소 1, 요소 2, ... , 요소 n}

배열 선언과 동시에 초기화가 가능하다. (이때 각 배열 요소가 선언될 중괄호에 빈 값을 넣으면 (아무 입력도 하지 않고 중괄호만 존재하면) 배열의 모든 요소에 0이 들어가게 된다.

배열의 길이를 선언할 때에는 반드시 상수를 사용해야 한다.

배열로 선언된 데이터는 연속된 메모리 공간에 위치한다.

연속된 메모리 공간에 처음 [0] 부터 입력받은 인덱스 값 만큼 이동하여 해당 요소를 찾는 것 ( 컴퓨터가 인덱스를 인지하는 과정)

 

4. 구조체(structure type)

사용자 정의 자료형

하나의 자료형인 배열과는 다르게 다양한 타입의 변수 집합을 하나의 타입으로 나타낸 것

이때 구조체를 구성하는 변수를 구조체의 맴버(member) 또는 맴버 변수(member variable)라 한다.

c++ 에서는 변수뿐만 아니라 함수도 맴버 변수로 가질 수 있다.

 

선언

struct 구조체명
{
	맴버1의자료형 맴버1의이름;
	맴버2의자료형 맴버2의이름;
	.
	.
	.
};

 

c++ 에서 구조체 변수를 선언할 때 struct 키워드 생략 가능

구조체의 크기는 구성하고 있는 맴버들의 크기의 합과 같다.

구조체에 아무런 내용이 없다면 1byte 로 취급하여 저장한다.

 

접근

구조체이름.맴버이름

참조 연산자( . )를 이용하여 단계별로 접근

 

초기화

구조체이름 = {맴버1의 초깃값, 맴버2의 초깃값, ... };

중괄호를 사용한 초기화 리스트로 초기화.

구조체 정의에서 맴버 변수가 정의된 순서에 따라 초깃값 설정. 나머지는 0으로 초기화.

* 구조체는 피라미드 식으로 구현할 수 있다.

 

5. 기타

sizeof( ) 함수 , 변수의 데이터 크기를 알 수 있다.

초기화(initialize)와 대입의 차이