Scientia Conditorium

[혼공단] 혼자 공부하는 C언어/혼공단 7기 - 5주차 본문

서평/IT-강의

[혼공단] 혼자 공부하는 C언어/혼공단 7기 - 5주차

크썸 2022. 2. 20. 20:39

[기본 미션] - 직접 정리한 키워드 공유하기

 

[배열(array)]

동일한 자료형을 여럿 담을 수 있는 자료 구조

배열 안에 있는 각 데이터를 요소(element)라고 부름

몇 개의 데이터를 담을지 결정한 뒤에는 그 수를 바꿀 수 없음(단, 내용 변경은 가능)

 

[배열의 색인]

대부분의 프로그래밍 언어에서 배열의 색인은 0부터 시작

-> 첫 번째 = 0, 두 번째 = 1

그 이유는 메모리 때문.

첫 번째 요소(시작)로부터 오프셋(offset) 얼마만큼 떨어져 있는지를 판단

 

C#과 달리 new를 반드시 사용할 필요가 없음

배열에 접근하는 법은 C#과 동일

 

모든 기본 자료형 변수(char, int, float)를 new 없이 사용할 수 있었던 이유는 바로 스택 메모리에 할당됐기 때문

기본 자료형을 함수 매개변수로 전달하면 스택에 복사본을 만듦 -> 이게 바로 값형

new로 만든 데이터는 힙(heap) 메모리에 할당됨

C# C
int[] nums = new int[5];
char[] name = new char[10];
float[] GPAs = new float[] { 3.1f, 2.2f, -13.0f };
int nums[5];
char name[10];
float GPAs[3] = { 3.1f, 2.2f, -13.f };

 

[배열 초기화]

배열 선언
int ary[5] = { 1, 2, 3, 4, 5}; { 1, 2, 3, 4, 5 }
int ary[5] = {}; (권장) { 0, 0, 0, 0, 0 }
int ary[5] = { 0 }; (권장) { 0, 0, 0, 0, 0 }
int ary[5] = { 0, }; { 0, 0, 0, 0, 0 }
int ary[5] = memset(ary, 0, 5); { 0, 0, 0, 0, 0 }
int ary[5] = { 1, 2, 3 }; { 1, 2, 3, 0, 0 }
int ary[5] = { 1 }; { 1, 0, 0, 0, 0 }

 

[배열 요소의 개수]

sizeof(배열명) / sizeof(배열 요소)

-> sizeof(ary) / sizeof(art[0])

 

예전에 면접을 볼 때, 배열이 뭐냐는 질문에 제대로 답하지 못한 적이 있었다. 배열이 어떤 것인지 곰곰히 생각해보면 충분히 답을 내릴 수 있었지만, 면접이라는 압박과 쳐음 들어본 질문이여서 당황했다. 배열을 보면 프로그래밍에서 왜 첫 번째를 0부터 시작하는지 알 수 있다.

 

 

[선택 미션] - 널 문자의 정의, 용도와 표기법 공유하기

널 문자, 널 캐릭터 ( \0 )

C언어에서 문자열을 배열에 저장할 때, 그 문자열 개수를 일일이 세어서 배열의 크기를 저장하려면 매우 번거로움

이를 막고자 문자열이 끝나는 위치에 특수한 아스키코드를 넣어서 끝을 알려줌

그것이 바로 널 문자, \0, 아스키 코드 0번

널 포인터하고 다른 녀석이니 주의할 것

 

널 문자와 포인터 개념을 이용해서 아래처럼 문자열 길이를 구할 수 있음

size_t get_string_length(const char* str)
{
    const char* p = str;
    while (*p++ != '\0') {
    }
    
    return p - str - 1;
}

size_t get_string_length(const char* str)
{
    size_t count = 0;
    const char* p = str;
    while (*p++ != '\0') {
    	++count;
    }
    
    return count;
}

※ POCU 두목 김포프 선생의 말씀으로는 문자열 길이도 구할 줄 모르는 프로그래머는 면접에서 바로 탈락이라고 하니,

반드시 알아두도록 하자.

 

 

주차 Chapter 기본 미션 선택 미션 추가 학습
1주차 Chapter 01 ~ 02 비주얼 스튜디오
설치 화면 인증샷
학습 스케줄 직접 짜고 공유하기 OpenGL 기본 셋팅
2주차 Chapter 03 ~ 04 확인 문제 풀고,
풀이 과정 설명하기
Ch.04 도전 실전 문제 풀고 인증샷 Shader 셋팅
3주차 Chapter 05 ~ 06 혼공 용어 노트에
용어 추가 등 노트
활용하고 공유하기
p.123 크리스마스 소개팅 예문 if 문 손코딩 인증샷 또는 실행 화면 캡쳐하기 Texture 입히기
4주차 Chapter 07 함수의 유형을
정리하여 공유하기
p.198 7-5 직접 해보는 손코딩 예제 테스트 후 apple 출력하고 종료한 화면 캡쳐하기. 왜 무한대로 출력되지 않는지
이유에 대해 생각하고 정리해보기
Transformation 적용
5주차 Chapter 08 직접 정리한
키워드 공유하기
널 문자의 정의,
용도와 표기법 공유하기
Coordinate System 적용
6주차 Chapter 09 포인터의 핵심 내용을
정리하고 공유하기
나만의 언어로 포인터 정리하기 Camera 적용