[CS50 2019] 3강. Array(2/3) - 배열과 문자열

OFFDUTYBYBLO·2021년 11월 27일
0
post-thumbnail

1. 메모리

c언어의 자료형

  • 각각의 자료형이 차지하는 메모리가 다르다.
  • bool : boolean, 1byte
  • char : 문자, 1byte
  • int : 정수, 4byte
  • float : 실수, 4byte
  • long : (더 큰)정수, 8byte
  • bouble : (더 큰)실수, 8byte
  • string : 문자열, ?byte

2. 배열

  • 각각의 데이터를 하나씩 선언해서 사용하게되면, 데이터의 효율적인 관리를 위해서 배열을 사용
// 예시 코드
#include <cs50.h>
#include <stdio.h>

int main(void)
{
    // Scores
    int scores[3]; // int 자료형인 크기 3의 배열을 scores라고 선언
    scores[0] = 72;
    scores[1] = 73;
    scores[2] = 33;

    // Print average
    printf("Average: %i\n", (scores[0] + scores[1] + scores[2]) / 3);
}
// 위의 코드는 여전히 점수의 개수가 바뀌는 상황에서 제약이 존재한다.
#include <cs50.h>
#include <stdio.h>

float average(int length, int array[]);

int main(void)
{
    // 사용자로부터 점수의 갯수 입력
    int n = get_int("Scores:  ");

    // 점수 배열 선언 및 사용자로부터 값 입력
    int scores[n];
    for (int i = 0; i < n; i++)
    {
        scores[i] = get_int("Score %i: ", i + 1);
    }

    // 평균 출력
    printf("Average: %.1f\n", average(n, scores));
}

//평균을 계산하는 함수
float average(int length, int array[])
{
    int sum = 0;
    for (int i = 0; i < length; i++)
    {
        sum += array[i];
    }
    return (float) sum / (float) length;
}
  • 배열의 크기를 사용자에게 입력 받고, 배열의 크기만큼 루프를 돌면서 각 인덱스에 해당하는 값을 사용자에게 동적으로 입력 받아 저장
  • average 함수를 통해서 평균값을 계산

3. 문자열과 배열

  • 우리가 지금까지 사용하 문자열(string) 자료형의 데이터는 사실 Char(문자) 자료형의 데이터들의 배열
string s = "Hi!";
//문자열 s가 정의
// s는 문자의 배열이기 때문에 메모리상에 배열로 저장되고, 인덱스로 각 문자에 접근할 수 있다.


출처 : cs50 2019 부스트코스 3.배열 - 6)문자열과 배열

profile
블로그 운영 x

0개의 댓글