C언어 - 열거형(enumeration)
·
C프로그래밍/개인 공부
열거형(enumeration)이란 변수가 가질 수 있는 값들을 나열해 놓은 자료형이다. 즉, 변수가 가질수 있는 상수값들을 나열해 놓은 자료형. 열거형으로 선언된 변수는 나열된 변수만 가질 수 있다. 예를 들어서, 요일을 나타내는 변수를 d라고 했을때, d는 월, 화, 수, 목, 금, 토, 일 만을 변수로 가질 수 있다. 그렇다면 열거형은 왜 쓰는가? 방금 전의 예처럼 월요일은 0, 화요일은 1, 수요일은 2 이런식으로 나타낼 수 있지만, 이렇게 하게 된다면 오류의 가능성, 가독성이 좋지않은 문제가 있다. 그렇기 때문에 MON, TUE, WED처럼 기호상수로 정의하는게 바람직하다고 볼 수 있다. 그렇다면 열거형을 한번 정의해보자. 예를 들어 요일을 나타내는 열거형을 정의해보면, 1 2 3 4 5 6 7 ..
C언어 - 구조체와 함수
·
C프로그래밍/개인 공부
구조체와 함수 구조체는 함수의 인수로도 사용이 가능하고 반환값으로도 사용가능하다. 구조체를 함수의 인수로 넘길때는 "값에 의한 호출"을 사용하게 된다. "값에 의한 호출" 즉, 복사를 사용하는 방법을 예제를 통해 알아보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include struct student { int num; char *name; float grade; }; int equal(struct student s1, struct student s2) { if(s1.num == s2.num){ return 1; } else{ return 0; } } int main(void) {..
C언어 - 구조체안에 문자배열? or 문자형을 가르키는 포인터?
·
C프로그래밍/개인 공부
1 2 3 struct{ char name[20]; }; cs 이렇게 하면 구조체 내부의 문자배열 name[20]에 문자열이 저장된다. 즉, 20바이트의 저장공간이 구조체 내부에 할당된다. 1 2 3 struct{ char *name; }; cs 이렇게 문자형을 가르키는 포인터를 선언하면, 문자열은 문자열 상수들이 모여있는 공간에 저장된다. 구조체 내부에는 포인터 name을 위한 1바이트만 할당되게 된다. 즉, 문자열을 위한 공간이 구조체 내부에는 없다. 문자열을 저장할 수 없다. 어딘가에 문자열이 이미 저장되어있을 경우에만 가르키면서 사용할 수 있다. 1 2 3 4 5 struct student{ char *name; }; struct student s; scanf("%s", s.name); cs 따라..
C언어 - 구조체와 포인터
·
C프로그래밍/개인 공부
구조체를 가르키는 포인터 지금까지는 포인터로 변수만을 가르켰다. 포인터는 구조체도 가르킬 수 있다. 구조체 포인터는 다음과 같이 만든다. 1 2 3 4 struct student s = {"2291048", "jin", "4.3"}; struct student *p; p = &s; Colored by Color Scripter cs 구조체 변수 s를 생성하고, student구조체를 가르킬 포인터 p를 만든다. 그리고 포인터 p에 구조체 변수 s의 주소를 넣어준다. 그리고 포인터 p가 가르키는 구조체의 멤버로 접근하려면 1 (*p).number cs 이렇게 '포인터가 가르키는 것'의 멤버 number 혹은 1 p->number cs 간단하게 이렇게 표현해도 된다. 그러면 멤버로 접근하는 간단한 예제를 보자..
C언어 - 문자열을 정수로, 정수를 문자열로 바꾸기
·
C프로그래밍/개인 공부
프로그래밍을 하다보면 문자열을 정수/실수로 바꾸거나 정수/실수를 문자열로 바꿔야하는 경우가 존재한다. atoi, atof 함수사용, sscanf, sprintf 함수를 사용하는 방법이 있다. sscanf, sprintf사용 1)sscanf() : 문자열로부터 읽어서 지정된 형식에 따라 변수에 저장한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 #include int main(void) { char s1[] = "100 200 300"; char s2[20]; int value; sscanf(s1, "%d", &value); //s1에서 읽어서 %d형식으로 value에 저장 printf("%d", value); //value를 출력 return 0; } Colored by Color Scrip..
피보나치 수열 재귀함수로 표현하기
·
C프로그래밍/Programming Lab(학교수업)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include int fibo(int num) { if (num