일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 혼공단5기
- 컴퓨터그래픽스
- 벌칸
- 혼공네트
- 혼공학습단
- 혼공C
- 딥러닝
- 혼공단
- 혼공스
- 데이터분석
- 한빛미디어
- OpenGL
- 책리뷰
- 불칸
- 혼자공부하는얄팍한코딩지식
- 혼공컴운
- 혼공S
- 혼공
- 리뷰리뷰
- 혼자공부하는C언어
- 혼자공부하는네트워크
- 혼공얄코
- 머신러닝
- 자바스크립트
- 제이펍
- 나는리뷰어다
- 파이썬
- vulkan
- 혼공머신
- 네트워크
- Today
- Total
Scientia Conditorium
[혼공단] 혼자 공부하는 C언어/혼공단 7기 - 5주차 본문
[기본 미션] - 직접 정리한 키워드 공유하기
[배열(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 적용 |
'서평 > IT-강의' 카테고리의 다른 글
[혼공단] 혼자 공부하는 C언어/혼공단 7기 - 6주차 (0) | 2022.02.27 |
---|---|
[혼공단] 혼자 공부하는 C언어/혼공단 7기 - 4주차 (0) | 2022.02.13 |
[혼공단] 혼자 공부하는 C언어/혼공단 7기 - 3주차 (0) | 2022.01.29 |
[혼공단] 혼자 공부하는 C언어/혼공단 7기 - 2주차 (0) | 2022.01.23 |
[혼공단] 혼자 공부하는 C언어/혼공단 7기 - 1주차 (0) | 2022.01.16 |