본문 바로가기
프로그래밍 언어/C언어

[혼자 공부하는 C언어] - Chapter 08 정리 및 문제 해결

by amobu0 2024. 6. 21.
혼자 공부하는 C언어 책 정리 및 발생하는 트러블 슈팅 해결

Chapter 08 함수

학습목표 

  • 많은 양의 데이터를 메모리에 저장하는 배열 생성 방법을 알아보자
  • 배열을 사용하는 방법과 배열이 문자열을 저장하는 방법을 알아보자

8-1 배열의 선언과 사용

동일한 자료형을 저장할 저장 공간이 많이 필요한 경우 일일이 변수를 선언할 수 없다. 이때 이 문제를 해결하기 위해 '배열'을 사용한다. 배열을 사용하면 많은 변수를 하나의 선언문으로 간단하게 대체할 수 있다.

 

예를 들어 다섯 과목의 점수를 처리하고 싶어서 int형 변수로 하나씩 개별적으로 선언했다고 가정하면 점수도 하나씩 변수에 넣어 줘야 한다. 즉, 반복문 사용이 불가능하다. 왜냐하면 이름이 별도로 있기 때문이다. 그래서 이 같은 형태의 많은 데이터를 반복문으로 처리하기 위해서 메모리에 연속적으로 저장해 놓고 쪼개서 사용하는 방법인 배열(array)을 사용한다.

핵심포인트

  1. 배열선언하면 많은 변수를 한 번에 선언하는 효과를 볼 수 있다.
  2. 배열초기화할 때 중괄호( { } )를 사용한다.
  3. 배열은 주로 반복문으로 처리한다.
  4. 배열 전체의 크기를 구할 때 sizeof 연산자를 사용한다.

배열의 선언과 요소의 사용

구분 사용 예 기능
배열 선언 int ary[5]; int형 변수 5개를 한 번에 확보한다.
요소 사용 ary[0], ary[1], ary[2], ary[3], ary[4] 배열 요소를 사용할 때는 첨자를 0부터 시작해 '요소 개수-1'까지 사용한다.
초기화 int ary[5] = { 1, 2, 3, 4, 5 }; 초기화는 중괄호 안에 값을 나열한다.

8-2 문자를 저장하는 배열

char형 배열은 문자들을 메모리의 연속된 공간에 저장할 수 있으므로 주로 문자열을 저장하는 용도로 쓴다. char형 배열을 선언할 때 꼭 기억해야할 점은 저장할 문자열의 길이보다 최소한 하나 이상 크게 배열을 선언해야 한다.

 

예를 들어 문자열 "apple"을 저장할 배열은 배열 요소 개수가 최소한 6개 이상이어야 한다. 이렇게 여분의 공간이 필요한 이유는 널 문자(\n)를 저정하기 위해서이다.


책과 다른 내용 

 

scanf_s("%s", str, sizeof(str));의 형태로 써야한다. 이렇게 해야 입력받을 문자열의 최대 크기를 scanf_s 함수에 전달할 수 있습니다. 이 추가적인 매개변수는 버퍼 오버플로우를 방지하기 위한 것입니다.


핵심 포인트

  1. char형 배열은 문자열을 저장하는 변수의 역할을 하는 것으로 문자열로 직접 초기화할 수 있다.
  2. char형 배열에 문자열을 저장할 때는 대입 연산자 대신 strcpy 함수를 사용한다.
  3. char형 배열에 문자열을 입출력 할 때는 scanf, gets, printf, puts 등의 함수를 사용한다.

문자열 처리

구분 사용 예 기능
char형 배열 초기화 char str[80] = "apple"; char형 배열은 문자열로 초기화한다.
문자열의 끝에는 널 문자가 있다.
문자열 대입 char str[80];

strcpy(str, "apple");
문자열 대입은 strcpy 함수를 사용한다.

str 배열에 문자열 "apple" 저장
문자열 입출력 char str[80];

scnaf("%s", str);

gets(str);

printf("%s", str);

puts(str);


scanf 함수는 하나의 단어만 입력

gets 함수는 한 줄 입력

printf 함수는 문자열 출력

puts 함수는 문자열 출력 후 줄 바꿈

다음 장은 포인터인데 기대된다.

https://m.hanbit.co.kr/store/books/book_view.html?p_code=B3773573071

 

혼자 공부하는 C 언어(개정판)

혼자 해도 충분하다! 1:1 과외하듯 배우는 C 프로그래밍 자습서

m.hanbit.co.kr