혼자 공부하는 C언어 | 5주차

5주차는 배열에 관해 배우는 챕터였고
배열의 여러 가지 초기화 방식, 문자 배열과 관련된 새로운 함수를 배울 수 있었습니다.
저수준 언어(positive)는 기본 개념을 확실히 잘 알아야 사용하기 쉬울 것 같다는 생각이 들었습니다.
계속해서 Python에서는 이렇게 하면 되는데… 라는 생각이 들게 하는 까다로운 C언어…


✅ 배열 ARRAY

기본 자료형을 여러 개 묶어서 사용하는 것.
인덱스를 가지고 순차적으로 순회하며 변수에 접근할 수 있다.

▶️ 확인 문제로 알아보는 배열의 선언 방법

1) 정수 5개를 저장할 배열: int arr[5];
2) 실수 10개를 저장할 배열: double arr[10];
3) 배열 요소 개수가 3개인 int형 배열: int arr[3];
4) 첨자의 최댓값이 4인 char형 배열: char str[5];

💡 4번 문제에서 인덱스의 최댓값이 4인데 크기는 5로 지정해주는 이유:
   문자열은 맨 끝에 '\0'이라는 널 문자가 들어가기 때문

✅ 널 문자 NULL CHARACTER

문자열의 끝을 알리거나, 특정 영역의 빈 값을 표시하는데 쓰이는 제어 문자

▶️ 널 문자의 용도

㉮ 실행 시 문자열의 끝을 컴퓨터에 알려주는 역할

Null character’s role

㉯ 크기가 정해진 배열에서 비어있는 값을 채워주는 역할

Null character’s role

✅ 새로 알게 된 내용 NEW!

▶️ gets( ), puts( ) | 문자열 전용 입출력 함수

Java에 println( ), Python에 print( )가 있다면 C언어에는 puts( )가 있다.
printf( )와 다른 점: printf( )에서는 줄바꿈을 하기 위해 ’\n’ 제어문자를 넣어줘야 하지만
puts( )에서는 그럴 필요가 없고, 제어문자를 해석하는 시간이 들지 않기 때문에 더 빠르다

⚠️ C11 표준 이후로 gets( ) 함수 삭제
gets( )는 입력받는 문자열의 길이를 제한하지 않아서 Buffer Overflow가 발생할 위험 있음
따라서 fgets( )로 대체.
gets( )는 입력 버퍼의 모든 내용을 읽으나 fgets( )는 문자열의 길이를 인자로 받아 지정된 크기까지만 읽음

이걸 몰라서 정보처리기사 문제 틀렸었는데 확실히 알아갑니다. (눈물)


배열은 솔직히 코딩테스트 문제에서 자주 사용하기도 하고 다른 언어를 배우면서 기본적으로 알게 되는 부분이라 다른 언어와의 차별점만 확실하게 짚고 넘어가면 되어서 이번 챕터는 크게 어렵지 않았습니다.
기대되는 것은 다음 장… 포인터 개념
새로운 프로젝트를 시작하기도 했고, 고작 일주일 쉬었다고 책을 펴기가 조금 힘들었지만 다시 돌아왔습니다
다음 주는 좀 더 알찬 내용으로 작성하도록…….

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus