Programming(25)
-
C 언어 | 왜 배열을 선언할 때 상수 변수값을 크기로 지정할 수 없을까?
문제 상황 프로그램을 짜던 중 배열의 크기가 자주 사용될 것 같아 전역 변수로 상수 변수값인'const int NUMBER_IN_ARRAY = 5'를 선언했다. 그리고 main함수 내에서 배열을 선언할 때 그 크기 값을 NUMBER_IN_ARRAY로 지정했다. 컴파일을 하니 바로 컴파일 에러가 났다.(variable-sized object may not be initialized) 왜 배열을 선언할 때 상수 변수값을 크기로 지정할 수 없을까? 원인 파악 우선 배열의 선언 방법을 다시 알아봐야 한다. C/C++에서 배열은 선언할 때 크기가 지정되어야 한다. 이때 대괄호 []를 사용하는데, 크기는 고정된 상수여야 하며 변수는 사용할 수 없다. 내가 사용한 const int도 결국 초기값을 변경할 수 없는 변..
2021.02.04 -
C 언어 | 명령행 인자
✔ 학습목표 명령행 인자를 받는 프로그램을 c로 작성할 수 있다. 명령행 인자 명령행 인자(command line arguments)는 사용자가 명령행에서 명령을 실행할 때 해당 명령과 함께 지정하는 인자를 의미한다. 명령행 인자는 자동으로 프로그램의 main함수에 전달된다. 이제껏 당연하게 int main(void)라 써왔던 main 함수를 생각해볼 때다. main도 그 형태를 보면 하나의 함수다. 즉 사용자 정의 함수처럼 입력값과 출력 값을 가질 수 있다는 것이다. #include #include int main(int argc, string argv[]) { if (argc == 2) { printf("hello, %s\n", argv[1]); } else { printf("hello, world\..
2021.02.02 -
C 언어 | 문자열의 활용
✔ 학습목표 문자열을 탐색하고 일부 문자를 수정하는 코드를 구현할 수 있다. 문자열의 길이 및 탐색 사용자로부터 문자열을 입력받아 한 글자씩 출력하는 프로그램을 만들어보자. 한 글자씩 출력해야 하기 때문에 출력에 있어서는 루프를 사용해야 할 것이다. 그렇다면 문자열의 끝은 어떻게 알 수 있을까? 한 가지 방법은 지난 강의에서 배운 대로 널 종단 문자(\0)를 이용하는 것이다. s라는 문자열이 있다고 할 때 for(int i = 0; s[i] != '\0'; i++){...} 과 같은 루프를 사용하는 것이 그 예이다. #include #include #include int main(void) { string s = get_string("Input: "); printf("Output:\n"); for (in..
2021.02.02 -
C 언어 | 문자열과 배열
✔ 학습목표 문자열이 C에서 정의되는 방식과 메모리에 저장되는 방식을 설명할 수 있다. 문자열과 배열 문자열(string) 자료형의 데이터는 사실 문자(char) 자료형 데이터들의 배열이었다. string s = "Hi!"; 와 같이 문자열 s가 정의되어 있다고 생각해보자. s는 문자의 배열이기 때문에 메모리상에 아래처럼 저장되고, 인덱스(예) s[0], s[1] 등)로 각 문자에 접근할 수 있다. 여기서 가장 끝의 '\n'은 문자열의 끝을 나타내는 널 종단문자다. 이는 모든 비트가 0인 1바이트를 의미한다. string names[4]; names[0] = "EMMA"; names[1] = "RODRIGO"; names[2] = "BRIAN"; names[3] = "DAVID"; printf("%s\n..
2021.02.02 -
C 언어 | 배열
✔ 학습목표 배열을 정의하고 사용하는 방법을 설명할 수 있다. 배열 아래와 같이 세 개의 점수를 저장하고 평균을 출력하는 프로그램을 예로 들어보자. #include #include int main(void) { // Scores int score1 = 72; int score2 = 73; int score3 = 33; // Print average printf("Average: %i\n", (score1 + score2 + score3) / 3); } 만약 점수의 개수가 더 많아진다면 이 프로그램은 많은 부분을 수정해야 한다(변수 선언, 계산식 등). 이 때 활용할 수 있는 것이 배열이다. 배열은 같은 자료형의 데이터를 메모리상에 연이어서 저장하고 이를 하나의 변수로 관리한다. 위 코드에서 배열을 사용하..
2021.02.02