이전 글에서 작성한 코드를 기반으로 배열의 문법에 대해서 공부해보자.
#include <stdio.h>
int ten(int k) {
int j;
int b = 1;
for (j = 0; j < k; j++)
b *= 10;
return b;
}
int digit(char a[4], int n) {
int i;
int b = 1;
int s = 0;
for (i = 0; i < n; i++) {
a[i] -= '0';
b = ten(n - i - 1);
s = s + a[i] * b;
}return s;
}
int main() {
int s;
int n = 4;
char a[4] = { '1', '2', '3', '4' };
s = digit(a, n);
printf("%d", s);
}
첫 번째.
그래서 코드를 다시한번 작성해본다면,
#include <stdio.h>
int ten(int k) {
int j;
int b = 1;
for (j = 0; j < k; j++)
b *= 10;
return b;
}
int digit(char a[], int n) { //12번째 줄
int i;
int b = 1;
int s = 0;
for (i = 0; i < n; i++) {
a[i] -= '0';
b = ten(n - i - 1);
s = s + a[i] * b;
}return s;
}
int main() {
int s;
int n = 4;
char a[] = { '1', '2', '3', '4' }; //27번째 줄
s = digit(a, n);
printf("%d", s);
}
12 번째 줄과 27 번째줄의 a[4] 를 a[] 로 4를 생략하였다.
세 번째.
const 함수를 쓸 경우 n은 변수가 아닌 상수로 간주된다.
이게 무슨 말이면..
만약 const int n = 4; 라고 선언한다면 n 은 4의 값에서 바뀔 수 없다.
#include <stdio.h>
int main() {
const int a = 10;
a += 7;
printf("%d", a);
}
const int a = 10; 이라고 선언하면 10의 값에서 바뀔 수 없으며
7을 더한다면 오류가 발생한다.
네 번째.
#include <stdio.h>
#define N 4
int ten(int k) {
int j;
int b = 1;
for (j = 0; j < k; j++)
b *= 10;
return b;
}
int digit(char a[], int n) {
int i;
int b = 1;
int s = 0;
for (i = 0; i < n; i++) {
a[i] -= '0';
b = ten(n - i - 1);
s = s + a[i] * b;
}return s;
}
int main() {
int s;
int n = 4;
char a[N] = { '1', '2', '3', '4' };
s = digit(a, n);
printf("%d", s);
}
https://book.naver.com/bookdb/book_detail.nhn?bid=8187381
'프로그래밍 언어 > C언어' 카테고리의 다른 글
C언어 - 전역변수, 지역변수 (0) | 2021.02.06 |
---|---|
C언어 - 숫자 표현 범위 (0) | 2021.02.03 |
C언어 - 배열과 함수 (0) | 2021.01.24 |
C언어 - 배열의 시작 (0) | 2021.01.20 |
C언어 - 아스키코드 (0) | 2021.01.19 |