☆ scanf문에서 숫자 변수를 다룰 때에는 번지로 다루기 때문에 항상 숫자 변수 앞에 & 기호를 붙여야함
- scanf("%d",&val);
☆ if, for, while, switch 등 제어문의 조건식 뒤에는 세미콜론을 붙이지 않는다
- if(x == 0)
- for(i=1;i<=100;i++)
- while(x == 1)
- switch(year % 12)
- 붙일 시에는 결과가 달라지거나 오류가 발생한다
☆ 수식에서 나눗셈을 할 경우는 / 연산자를 사용한다. (% 연산자는 나눗셈을 하고 난 나머지를 구한다)
☆ 수식에서 "같다"를 판단할 때에는 = 연산자가 아니라 == 연산자를 사용한다.
☆ char을 이용해 문자열을 선언할 경우는 배열을 이용한다.
- char ddi[10]; <-- 최대 10글자짜리 문자열변수 ddi를 선언
- 선언된 문자열 변수에 문자열을 넣을 경우 = 연산자를 사용해 바로 넣을 수는 없다
( ddi = "원숭이"; <-- 이런 식으로는 불가능함. strcpy(ddi,"원숭이"); 와 같은 식으로 넣어야 한다)
☆ 함수의 선언에 대해 다시 한번 기억해 둘 것
void init()
{
puts("Shopping List: ");
puts("1. 사과");
//return;
puts("2. 바나나");
puts("3. 수박");
}
void main()
{
init(); // 위에서 선언한 함수 init를 호출하여 실행
}
- 함수의 종류
call by name : 매개변수 없이 호출
call by value : 값을 전달하는 함수
call by address : 주소를 전달하는 함수
call by reference : reference를 전달하는 함수(c++)
※ 레퍼런스 함수는 c++에만 있음
- 함수의 문법
리턴타입, 함수명(매개변수1, 매개변수2...)
- 리턴타입이 void일 경우는 매개변수 필요없음, 리턴값도 필요없음(함수 내에서 return을 써줄 때에도 값이 필요없다)
- 리턴타입이 void가 아닐 경우는 매개변수가 필요해지며, return을 사용할 때에도 리턴값을 붙여 줘야 한다
- C는 순차실행이므로, 위 예제에서 init 함수를 main() 다음에 선언해 버리면 에러가 발생한다(선언되지 않은 함수를 main() 내에서 호출했기 때문에). 이 경우는 다음과 같이 할 수 있다.
#include <stdio.h>
void init(); // 아래쪽에 정의된 함수 init를 먼저 선언한다 <-- ※ 중요!
char getalpha(); // 마찬가지로 아래쪽에 정의된 함수 getalpha를 먼저 선언한다
void main()
{
init(); // 위에서 선언한 함수 init를 호출하여 실행
printf("main함수에서 호출 : %c\n",getalpha());
putchar(getalpha());
printf("\n");
}
void init()
{
char s;
s=getalpha();
printf("init에서 호출 : %c\n",s);
puts("Shopping List: ");
puts("1. 사과");
puts("2. 바나나");
puts("3. 수박");
}
char getalpha()
{
puts("알파벳을 보내주마!!");
return 'A';
}
☆ 함수의 선언, 정의, 호출
char getgrade();
void main()
{
int sc;
char gr;
printf("점수?");
scanf("%d",&sc);
gr=getgrade(sc);
printf("%d 점은 %c 학점입니다.\n",sc,gr);
}
char getgrade(int s)
{
char gr;
gr = s <= 100 && s > 90 ? 'A' : s > 80 ? 'B' : s > 70 ? 'C' : s > 60 ? 'D' : 'F';
return gr;
}
- 함수의 정의내용 중에서 return으로 돌려지는 값의 형태에 따라, 함수의 선언타입을 바꾼다. 위 예제에서는 getgrade의 결과로 돌려지는 gr값이 문자이므로, char로 선언하고 아래쪽 정의의 매개변수에서 (int s)로 정해준다. (색깔에 맞춰서 참조)
- 사용자 함수가 정의되었을 때에 내부적으로 사용되는 변수는 타입만 같으면 이름은 달라도 상관없다. 값을 넘겨받고 넘겨주기 때문에.
'기반지식 > C/C++' 카테고리의 다른 글
중앙정보학원 C/C++/OOP 강좌 8일차 - 2010년 6월 16일 (0) | 2010.06.16 |
---|---|
중앙정보학원 C/C++/OOP 강좌 7일차 - 2010년 6월 15일 (0) | 2010.06.15 |
중앙정보학원 C/C++/OOP 강좌 4일차 - 2010년 6월 9일 (0) | 2010.06.10 |
중앙정보학원 C/C++/OOP 강좌 3일차 - 2010년 6월 9일 (0) | 2010.06.09 |
중앙정보학원 C/C++/OOP 강좌 2일차 - 2010년 6월 8일 (0) | 2010.06.09 |