배열 (Array)(2)

박상록(Sangrok Park)·2021년 2월 3일
0

Computer Science Basic

목록 보기
11/13

아래 코드의 문제점

#include <stdio.h>

int main(void) 
{
    int scores[3];
    scores[0] = 72;
    scores[1] = 73;
    scores[2] = 33;
    
    printf("Average: %i\n", (scores[0] + socres[1] + scores[2] / 3));
}

여러가지가 있지만 한마디로 확장성과 재사용성이 없다는 것.

const 소개

#include <stdio.h>

const N = 3;
    
int main(void) 
{

    
    int scores[N];
    scores[0] = 72;
    scores[1] = 73;
    scores[2] = 33;
    
    printf("Average: %i\n", (scores[0] + socres[1] + scores[2] / N);
}

위에서 const는 불변의 값, 대문자로 써주는 것이 컨벤션

자바스크립트 const가 여기서 왔구나!!

리팩토링

#include <stdio.h>

float average(int length, int array); // float함수의 프로토 타입

int main(void) 
{
    int scores[3];
    scores[0] = 72;
    scores[1] = 73;
    scores[2] = 33;
    
}
    printf("Average: %i\n", average(int length, int array[]);
    
float average(int length, int array);
{
    int sum = 0;
    for (int i = 0; i < length; i++) 
    {
      sum += array[i];
    }
    return sum / length;
}

average함수 선언위치가 실행단계보다 아래에 있어,
함수의 프로토타입을 실행구문 윗쪽에 배치

아아아 함수 프로토타입이라는 말이 여기서부터 생겨난 말이구나..!!

C에서 정수를 정수로 나누게 되면 -> 정수 리턴

int num1 / int num2

결과값이 99.999999999999999999999999999라도
위와같은 계산은
99 리턴

자바스크립트의 Math.floor와 같은 기능을 하는구나~!!

average함수의 리턴부분을

return (float) sum / (float) length;

이렇게 형 변환 해주면, 소숫점 자리까지 나오고

printf("Average: %i.1\n", average(int length, int array[]);

이렇게 .1을 추가하면 소숫점 한자리 수까지만 보여줌

C는 다른 언어와 달리
배열의 길이를 기억하지 않는다. 무조건 명시해서 선언해 줘야 한다.

출처 : [부스트코스] 모두를 위한 컴퓨터 과학 (CS50 2019) (https://www.boostcourse.org/)

profile
한 줌의 소금과 같이 되고 싶은 개발자

0개의 댓글