[C++ Korea 2nd Seminar] C++17 Key Features SummaryChris Ohk
C++은 10년 만에 C++11/14를 발표하면서 '모던 C++'이라는 이름으로 발전했습니다. 그만큼 새로운 기능들이 많이 추가되었습니다. 그리고 2017년, C++은 C++17이라는 이름으로 또 한 번의 발전을 준비하고 있습니다. 3년 주기로 빠르게 변화하는 모던 C++에 대비하기 위해, C++17에 추가될 주요 기능들을 살펴보고자 합니다.
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기Chris Ohk
기존에 작성해 놓은 C++ 코드에 모던 C++를 적용하기는 쉽지 않습니다. 막상 개선하려고 마음먹었다고 해도, 어디서부터 바꿔야 할 지 막막하기만 합니다. 이 세션에서는 기존 C++ 코드에서 모던 C++를 적용해 프로그램의 구조와 성능을 개선하는 방법에 대해서 설명합니다. 그리고 기존 C++ 코드에 모던 C++를 적용할 때 주의해야 될 점에 대해서도 살펴봅니다.
C++은 10년 만에 C++11/14를 발표하면서 '모던 C++'이라는 이름으로 발전했습니다. 그만큼 새로운 기능들이 많이 추가되었습니다. 그리고 2017년, C++은 C++17이라는 이름으로 또 한 번의 발전을 준비하고 있습니다. 3년 주기로 빠르게 변화하는 모던 C++에 대비하기 위해, C++17에 추가될 주요 기능들을 살펴보고자 합니다.
이 발표는 이전에 발표했던 내용에서 일부 사례 추가 및 최신 내용으로 갱신한 버전입니다.
[C++ Korea 2nd Seminar] C++17 Key Features SummaryChris Ohk
C++은 10년 만에 C++11/14를 발표하면서 '모던 C++'이라는 이름으로 발전했습니다. 그만큼 새로운 기능들이 많이 추가되었습니다. 그리고 2017년, C++은 C++17이라는 이름으로 또 한 번의 발전을 준비하고 있습니다. 3년 주기로 빠르게 변화하는 모던 C++에 대비하기 위해, C++17에 추가될 주요 기능들을 살펴보고자 합니다.
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기Chris Ohk
기존에 작성해 놓은 C++ 코드에 모던 C++를 적용하기는 쉽지 않습니다. 막상 개선하려고 마음먹었다고 해도, 어디서부터 바꿔야 할 지 막막하기만 합니다. 이 세션에서는 기존 C++ 코드에서 모던 C++를 적용해 프로그램의 구조와 성능을 개선하는 방법에 대해서 설명합니다. 그리고 기존 C++ 코드에 모던 C++를 적용할 때 주의해야 될 점에 대해서도 살펴봅니다.
C++은 10년 만에 C++11/14를 발표하면서 '모던 C++'이라는 이름으로 발전했습니다. 그만큼 새로운 기능들이 많이 추가되었습니다. 그리고 2017년, C++은 C++17이라는 이름으로 또 한 번의 발전을 준비하고 있습니다. 3년 주기로 빠르게 변화하는 모던 C++에 대비하기 위해, C++17에 추가될 주요 기능들을 살펴보고자 합니다.
이 발표는 이전에 발표했던 내용에서 일부 사례 추가 및 최신 내용으로 갱신한 버전입니다.
Let MX-Sync keep Microsoft Outlook contacts synchronized between all your Office 365 users. Our service is now completely cloud based and requires no messy client-side plug-ins.
[C++ Korea] Effective Modern C++ Study item14 16 +신촌Seok-joon Yun
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
Item 14 : Declare functions noexcept if they won't emit exceptions. +윤석준
Item 15 : Use constexpr whenever possible. +이동우
Item 16 : Make const member functions thread safe. +제한재
2. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
2
C 프로그래밍 (3)반복문(for문)
for문 구조 for문 예시 코드
- 초기 값(식1)에서 시작하여 반복 여부 조건
(식2)이 참이면 블록 내의 문을 처리
- 블록 내 문의 처리 후 식3에 의해 초기값이
변화됨
for(초기화 식1; 반복 여부 조건 식2;
초기값 변화 식3) {
문1;
문2;
…
}
int i;
for(i=1; i<=5; i++){
printf(“%d번째 반복입니다.n”, i);
}
printf(“반복을 종료했습니다. n”);
1번째 반복입니다.
2번째 반복입니다.
3번째 반복입니다.
4번째 반복입니다.
5번째 반복입니다.
반복을 종료했습니다.
실행 결과
블록 내의 문을 순서대로
반복 처리합니다.
for
조건 문
참
거짓
변수 i값을 1로 초기화, i값이 5보다
커질 때까지 내부의 문을 반복
처리 후 i값을 1씩 증가시킴
반복할 때마다 값이
1씩 증가합니다.
3. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
3
C 프로그래밍 (3)반복문(while문)
while문 구조 while문 예시 코드
- 조건이 참이면 지정한 문을 몇 번이라도
반복 처리
- while문은 조건이 거짓이면 while문을
처리하지 않음
while(조건) {
문1;
문2;
…
}
int i=1;
while(i <= 5){
printf(“%d번째 반복입니다. n”, i);
i++;
}
printf(“반복을 종료했습니다. n”);
1번째 반복입니다.
2번째 반복입니다.
3번째 반복입니다.
4번째 반복입니다.
5번째 반복입니다.
반복을 종료했습니다.
실행 결과
블록 내의 문을 순서대로
반복 처리합니다.
while
조건 문
참
거짓
조건이 거짓이 되도록 증가시킵니다.
무한 반복이 되지 않도록 하는 역할
반복할 때마다 값이
1씩 증가합니다.
조건 표기에 주의해야 함,
조건이 무조건 참인 경우는
무한반복하게 됨
4. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
4
C 프로그래밍 (3)반복문(do~while문)
do~while문 구조 do~while 문 예시 코드
- while문과 달리 조건을 판단하기 전에
블록 내의 문을 처리함
- 최소 한 번은 반드시 블록 내의 처리가
이루어짐
do{
문1;
문2;
…
} while(조건);
int i=1;
do{
printf(“%d번째 반복입니다. n”, i);
i++;
} while(i <= 5);
printf(“반복을 종료했습니다. n”);
1번째 반복입니다.
2번째 반복입니다.
3번째 반복입니다.
4번째 반복입니다.
5번째 반복입니다.
반복을 종료했습니다.
실행 결과
블록 내의 문을 순서대로
반복 처리합니다.
while
조건
참
거짓
i<=5가 거짓이면 반복을
종료합니다
최소한 한번은 루프
본체가 실행됨
조건이 참이면 반복을
계속합니다.
문
do
5. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
5
C 프로그래밍 (3)처리 흐름의 변경
break문 구조 continue문 구조
int res, i;
printf(“몇 번째 루프를 중지할까요? (1-
10) n“);
scanf(“%d”, &res);
for(i=1; i<=10; i++){
printf(“%d번째 처리입니다. n“, i);
if(i==res) break;
}
몇 번째에서 루프를 중지할까요?(1-10)
3 [enter]
1번째 처리입니다.
2번째 처리입니다.
3번째 처리입니다.
실행 결과
구문 : break;
처리의 흐름을 강제적으로 종료시키고,
그 블록에서 빠져나가는 처리
int res, i;
printf(“몇 번째 처리를 건너뛸까요?(1-10)
n”);
scanf(“%d”, &res);
for(i=1; i<=5; i++){
if( i == res) continue;
printf(“%d번째 처리입니다. n“, i);
}
입력한 횟수에서
반복을 종료함
구문 : continue;
반복문 안의 처리를 건너뛰고 블록의
처음 위치로 돌아가서 다음 처리 실행
몇 번째 처리를 건너뛸까요?(1-10)
3 [enter]
1번째 처리입니다.
2번째 처리입니다.
4번째 처리입니다.
5번째 처리입니다.
실행 결과
10번 반복하는 for문이지
만 입력한 횟수인 3번째
문 처리 후 강제 종료됨
5번 반복하는 for문이지
만 입력한 횟수인 3번째
문은 건너뛰고 다음 문
이후 계속 처리됨
입력한 횟수에서
다음 문은 건너뛰고
처음으로 돌아감
6. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
6
C 프로그래밍 (3)배열의 선언 및 이용
int test[5];
배열의 선언 배열의 요소와 값 대입
- 배열은 같은 형의 복수의 값을 나열하
여 기억하는 기능이며 배열 내 각각의
상자를 배열 요소(element)라고 함
- 배열 선언이란 배열이라는 복수의 상
자를 준비하면서 데이터 형과 식별자
인 배열이름을 지정하는 것
- 배열의 요소 수는 미리 지정해 두어야
하고, [ ] 안에 요소 수를 지정하고 이
번호를 인덱스(index, 첨자)라고 함
- 배열 인덱스는 0부터 시작하기 때문에
마지막 인덱스는 ‘요소 수-1’이 됨
형 이름 배열 이름[요소 수];
int test[5], i;
test[0] = 80;
test[1] = 60;
test[2] = 22;
test[3] = 50;
test[4] = 75;
1번째 사람의 점수는 80점입니다.
2번째 사람의 점수는 60점입니다.
3번째 사람의 점수는 22점입니다.
4번째 사람의 점수는 50점입니다.
5번째 사람의 점수는 75점입니다.
test[0] test[1] test[2] test[3] test[4]
for(i=0; i<5; i++){
printf(“%d번째 사람
의 점수는 %d점입니다.
n”, i+1, test[i]);
}
int형 5개의 값을 배열로 선언
배열 이름[인덱스] = 식;
실행 결과
test[0] test[1] test[2] test[3] test[4]
80 60 22 50 75
7. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
7
C 프로그래밍 (3)배열의 초기화
int test[5] = {80, 60, 22, 50, 75};
||
int test[] = {80, 60, 22, 50, 75};
배열의 초기화 배열의 초기화 예시코드
- 배열의 초기화는 ‘배열의 선언’과 ‘값
의 대입’을 한번에 표기
- { } 안에 각 요소의 값을 나열해서 표
기하면 배열이 준비되었을 때 각각의
값이 배열의 요소에 저장됨
- { } 안에 지정하는 값을 초기화 값
(initializer) 또는 초기자라고 함
- 요소 수를 지정하지 않으면 초기화 값
의 수에 따라 요소가 자동으로 준비됨
- 요소 수보다 적은 초기화 값을 표기하
면 남는 요소에 0 값이 자동 저장
형이름 배열이름[요소수]={값0, 값1,…};
int test[5] = {80, 60, 22, 50, 75}
int i;
for(i=0; i<5; i++){
printf(“%d번째 사람의 점수는 %d점입
니다. n”, i+1, test[i]);
}
1번째 사람의 점수는 80점입니다.
2번째 사람의 점수는 60점입니다.
3번째 사람의 점수는 22점입니다.
4번째 사람의 점수는 50점입니다.
5번째 사람의 점수는 75점입니다.
실행 결과
test[0] test[1] test[2] test[3] test[4]
80 60 22 50 75
5개의 배열 요소를 초기화
8. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
8
C 프로그래밍 (3)다차원 배열
다차원 배열 다차원 배열 예시코드
- 배열은 2차원 이상으로 나열된 다차원
배열로 지정 할 수 있음
- 배열의 n차원은 요소 수를 n개 나열하
면 됨
- 다차원 배열의 초기화는 아래와 같이
여러가지 방법으로 가능함
- 배열의 인덱스를 지정하여 값을 대입
test[0][0] = 80;
…
test[1][4] = 58;
- 배열의 요소별 값을 모두 초기화 방법
int test[2][5] = {{80, 60, 22, 50, 75},
{90, 55, 68, 72, 58}}
int test[ ][5] = {{80, 60, 22, 50, 75},
{90, 55, 68, 72, 58}}
형 이름 배열 이름[요소 수][요소 수]
int test[2][5] = {{80, 60, 22, 50, 75}, {90,
55, 68, 72, 58}}
for(int i=0; i<5; i++){
printf(“%d번째 사람의 국어 %d점, 산
수 %d점입니다. n”, i+1, test[0][i],
test[1][i]);
}
1번째 사람의 국어 80점, 산수 90점입니다.
2번째 사람의 국어 60점, 산수 55점입니다.
3번째 사람의 국어 22점, 산수 68점입니다.
4번째 사람의 국어 50점, 산수 72점입니다.
5번째 사람의 국어 75점, 산수 58점입니다.
실행 결과
test[0] test[1] test[2] test[3] test[4]
요소 수를 생략 가능 test[0][0] test[0][1] test[0][2] test[0][3] test[0][4]
test[1][0] test[1][1] test[1][2] test[1][3]
80 60 22 50 75
test[1][4]
90 55 68 72 58
9. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
9
C 프로그래밍 (3)문자열과 배열
문자열과 배열의 관계 문자열 입출력 예시코드
- 문자열은 char형 배열로 취급
- 문자열 배열의 마지막 요소는 ‘0’
- 문자열 배열의 요소 수는 ‘문자열
길이+1’ 이상이 필요
- “ “로 문자열을 초기화할 수 있지만
변수에 대입은 불가함
문자열 배열의 초기화 구문
char str[6]=“Hello”
char str[]=“Hello”
char str[6]={‘H’, ’e’, ’l’, ’l‘, ’o’, ‘0’};
char str[]={‘H’, ’e’, ’l’, ’l‘, ’o’, ‘0’};
char str1[ ] = “Hello”;
char str2[100];
printf(“str1 문자열은 %s 입니다. n”,
str1);
printf(“문자열을 입력하세요. n”);
scanf(“%s”, str2);
printf(“입력한 문자열은 %s입니다. n”,
str2);
str1 문자열은 Hello 입니다.
문자열을 입력하세요.
Hello [enter]
입력한 문자열은 Hello입니다.
실행 결과
str[0] str[1] str[2] str[3] str[4]
‘H’ ‘e’ ‘l’ ‘l’
str[5]
‘l’ ‘0’
문자열 출력 위한
변환 사양은
%s 사용
문자열 입력 변환사양
은 %s 사용, 배열 이름
에 & 붙이지 않음
10. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
C 프로그래밍 (3)함수의 정의와 호출
함수의 정의 함수의 호출
- 함수(function) : 여러 번 반복하는 일정한
처리를 하나로 모아두고 호출해서 사용하
는 기능
- 함수를 이용하기 위해서는 2가지 과정이
필요함(함수 정의 및 호출)
- 함수의 정의는 코드 안에서 일정하게 정리
된 처리를 작성하는 것
반환 값의 형 함수 이름(인수 리스트)
{
문;
. . .
return 식;
}
- 함수 호출(function call) : 정의된 함
수를 이용하는 것
- 함수를 호출하기 위해서는 함수 이름
과 인수 리스트, 마지막에 세미콜론을
붙임
- 함수가 호출되면 정의한 함수가 일괄
적으로 처리됨
함수 이름(인수 리스트);
함수의 이름은
식별자를 사용
처리를 블록 내에
정리하여 작성
10
/* buy 함수 호출 */
int main(void) {
buy();
return 0;
}
차를 구입했습
니다.
실행 결과예시 코드
/* buy 함수 정의 */
void buy(void) {
printf(“차를 구입했습니다. n”);
}
함수의 이름
11. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
C 프로그래밍 (3)함수의 인수
함수의 인수 인수를 갖는 함수 예시 코드
- 인수(argument) : 함수로 전달하는 정
보
- 함수는 인수를 이용하여 호출한 장소
로부터 함수 안으로 어떤 정보(값)을
전달하고 그 값에 따른 처리 가능
- 변수 x(인수)는 buy() 함수 내부 처리
에 이용할 수 있으며 함수 안에서만
사용 가능
/* buy 함수 정의 */
void buy( int x )
{
printf(“%d만 원짜리 차를 구입했
습니다. n”, x );
}
/* buy 함수 정의 */
void buy(int x )
{
printf(“%d만 원짜리 차를 구입했습
니다. n”, x );
}
/* buy 함수 호출 */
int main(void)
{
buy( 20 );
buy( 50 );
return 0;
}
int형 인수 준비
11
20만 원짜리 차를 구입했습니다.
50만 원짜리 차를 구입했습니다.
실행 결과
인수를 함수
안에서 사용
값을 전달받는 가인수
(parameter) 또는
매개변수
전달 받은 값을 출력
실인수 20을 전달해서 호출
실인수 50을 전달해서 호출
12. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
C 프로그래밍 (3)함수의 반환 값
함수의 반환 값 함수 반환 값 예시 코드
- 반환 값(return value) : 함수 본체로부
터 함수를 호출한 곳으로 반환되는
특정한 정보
- 반환 값을 반환하기 위해서는 반환하
는 값의 데이터 형을 함수 이름 앞에
표기(①)
- 함수의 블록 안에 return 문을 사용해
서 실제로 식의 값을 반환 처리(②)
반환 값의 형 함수 이름(인수 리스트)
{
문;
. . .
return 식;
}
int buy(int x, int y) {
int z;
printf(“%d만원과 %d만 원짜리 차를
구입했습니다. n”, x, y );
z = x+y;
return z;
}
int main(void) {
int num1=20, num2=50, sum;
printf(“%d만원과 %d만 원짜리 차를
구입했습니다.”, num1, num2);
sum = buy(num1, num2);
printf(“합계 %d만원입니다. n”, sum);
return 0;
}
반환 값의 형을 지정
12
20만원과 50만 원짜리 차를 구입했습니
다. 합계 70만원입니다.
실행 결과
함수를 호출한 곳으
로 식의 값을 반환
②
①
반환 값을 갖는
함수
함수를 호출하고 그 반환
값을 변수 sum에 대입
13. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
C 프로그래밍 (3)인수와 반환 값 없는 함수
인수 없는 함수 반환 값 없는 함수
- 인수 없는 함수를 정의할 때는 void
라는 특수한 형 이름으로 지정
- 인수가 없는 함수를 호출할 때는 ( )
값을 지정하지 않고 호출
/* buy 함수 정의 */
void buy( void )
{
printf(“차를 구입했습니다. n”);
}
/* buy 함수 호출 */
int main(void){
buy( );
}
인수가 없는 경우
void형으로 지정
13
인수를 전달하지
않고 호출
- 반환 값이 없는 함수를 정의할 때는
반환 값의 형을 void 형으로 지정
- 반환 값이 없는 함수는 블록 마지막 }
까지 처리되거나, return; 문으로 종료
/* buy 함수 정의 */
void buy( void ) {
printf(“차를 구입했습니다. n”);
(return;)
}
/* buy 함수 호출 */
int main(void){
buy( );
}
반환 값이 없는 경우
void형으로 지정
반환 값이 없으므로
함수만 호출
14. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
C 프로그래밍 (3)함수 형식 매크로
함수 형식 매크로 함수 형식 매크로 예시 코드
- 함수를 이용하면 인수나 반환 값을
전달할 때 필요 이상으로 시간이 걸
리는 경우가 있음
- 함수 형식 매크로(function-like
macro)를 이용하면 처리 속도 향상
가능
- 함수 형식 매크로를 호출하면 프리프
로세서에 의해 정의된 식으로 변환됨
[ 함수 형식 매크로의 정의 ]
#define 매크로 이름(인수) (식)
#define MAX(x, y) (x > y ? x : y)
[함수 형식 매크로의 호출]
매크로 이름(인수);
ans = MAX(num1, num2);
#include <stdio.h>
#define MAX(x, y) (x > y ? x : y)
int main(void){
int num1, num2, ans;
printf(“1번째 정수를 입력하세요. n”);
scanf(“%d”, &num1);
printf(“2번째 정수를 입력하세요. n”);
scanf(“%d”, &num2);
ans = MAX(num1, num2);
printf(“최댓값은 %d입니다. n”, ans);
return 0;
}
14
1번째 정수를 입력하세요.
10 [enter]
2번째 정수를 입력하세요.
프리프로
세서에 의
해 변환
num1 > num2 ? num1 : num2
5 [enter]
최댓값은 10입니
다.
실행 결과
15. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
15
C 프로그래밍 (3)변수의 종류와 유효 범위
변수의 종류 변수의 유효 범위
- 지역 변수(local variable) : 함수 안에
서 선언한 변수
- 전역 변수(global variable) : 함수 밖
에서 선언한 변수
- 지역 변수는 for문, if문 블록 안에서
선수에 선언될 수 있으며, 함수의 가
인수도 지역 변수임
- 전역 변수와 지역 변수는 이름이 동
일해도 다른 변수로 인식 처리됨
int a = 0;
void func(void) {
int c = 2;
}
int main(void) {
int b = 1;
}
- 지역 변수는 함수 안에서 선언되며
함수가 끝날 때까지 이용 가능, 함수
밖에서는 이용 불가
- 전역 변수는 선언된 소스 코드 전체
에서 이용 가능
int a = 0;
void func(void) {
int c = 2;
}
int main(void) {
int b = 1;
func( );
return 0;
}
전역변수
지역변수
지역변수 c의
유효범위
지역변수 b의
유효범위
전역변수
a의 유효
범위
16. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
C 프로그래밍 (3)변수의 기억 수명
지역 변수의 기억 수명 전역 변수의 기억 수명
]
- 함수가 종료되면 지역 변수의 메모리 공간
은 해제되고 다시 함수를 호출하면 새로운
메모리 공간이 생성됨
- 지역변수에 static을 정적 변수가 되어 전
연 변수처럼 이용 가능, 프로그램 종료시
까지 변수 유지됨
[지역 변수 생성과 소멸]
(1) 함수 안에서 지역 변수가 선언될
때 메모리에 특정 공간이 준비됨
(2) 지역 변수에 값이 저장됨
(3) 함수가 종료할 때 지역 변수를 위
한 메모리의 특정 공간은 해제되
고 다른 용도로 사용됨
16
b b
함수 종료
메모리 해제
함수 시작
변수 선언
지역
변수 b
- 프로그램이 종료되기 전까지 전역 변
수는 계속 유지되므로 정적 기억 영
역이라고 함
[전역 변수 생성과 소멸]
(1) 프로그램 선두에 전역 변수가 선
언되면 프로그램 본체의 처리가
시작하기 전에 한번만 메모리가
확보됨
(2) 전역 변수에 값이 저장됨
(3) 프로그램이 종료되면 전역 변수를
위한 메모리 공간은 해제됨
a a
프로그램
종료
프로그램
시작
전역
변수 a
17. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
C 프로그래밍 (3)함수 선언
함수 프로토타입 선언 함수 선언 예시 코드
- 함수 프로토타입 선언(function
declaration) : 함수를 호출하기 전에
호출하는 함수의 이름, 반환 값의 형,
인수를 선언하는 것
- 이 선언을 해두면 함수 본체를 코드
안의 어느 장소에서 정의해도 정확하
게 호출할 수 있음
- 먼저 함수 선언을 하면 main() 함수
뒤에 함수를 정의 가능
반환 값의 형 함수 이름(인수 리스트);
/* max 함수 선언 */
int max(int x, int y);
int main(void){
int num1=10, num2=5, ans;
printf(“10과 5의 최대값을 구합니다.
n”)
ans = max(num1, num2);
printf(“최댓값은 %d입니다. n”, ans);
return 0;
}
/* max 함수 정의 */
int max(int x, int y) {
return x > y ? x : y;
}
17
20과 50의 최대값을 구합니다.
최댓값은 50입니다.
실행 결과
/* max 함수 선언 */
int max(int x, int y);
int main(void) { … }
/* max 함수 정의 */
int max(int x, int y) { … }
함수 프로토타입
선언
함수 선언을 이용
하면 함수 정의는
어느 장소에 해도
되며, 다른 파일로
저장 이용 가능
18. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
18
본 자료는 코딩인카페 1기 C&JAVA 기초과정
5회차 자료 중 일부를 발췌한 내용입니다.
< 참고자료 >
- 그림으로 배우는 C프로그래밍, 마나 다카하시, 영진닷컴.