본문 바로가기

Language&Framework&Etc/C50

포인터 연습용 #include void swap(int*, int*); void func_point(int, int); int main(void) { /* 단순한 형태의 포인터 */ /* int a = 0; int* pa = &a; int** ppa = &pa; printf("a : %d \n", a); printf("&a : %p \n\n", &a); printf("pa : %p \n", pa); // 포인터 변수 pa에 저장된 주소 값 => &a printf("*pa : %d \n", *pa); // 포인터 변수 pa에 저장된 주소에 접근하여 그 주소가 가리키는 값을 가져와라 printf("&pa : %p \n\n", &pa); // 포인터 변수 pa의 주소 값 printf("ppa : %p \n", ppa); /.. 2020. 12. 28.
파일의 분할과 헤더파일의 디자인(27-3) 헤더파일의 디자인과 활용 #include 지시자의 의미를 알면 헤더파일을 완전히 이해할 수 있음 예시 헤더파일 두 개를 아래와 같은 코드로 만든다. 1. header1.h { puts("Hello man!"); 2. header2.h return 0; } main문을 아래와 같은 코드로 구성한다. #include int main(void) #include "header1.h" #include "header2.h" 이상해보이지만 실행을 해보면 아래와 같이 결과가 나온다. 그렇다면 아래의 의미는 무엇인가 #include "header1.h" 이는 "이 문장의 위치에다가 header1.h에 저장된 내용을 가져다 놓으세요" 그렇다면 아래의 의미도 동일하다. #include "header2.h" "이 문장의 위치에다가 header2.h에.. 2020. 12. 19.
파일의 분할과 헤더파일의 디자인(27-2) 둘 이상의 파일을 컴파일하는 방법과 static에 대한 고찰 파일정리 총 세 개의 파일을 만든다. num.c func.c main.c main.c에서는 printf 함수의 호출문이 존재하기 때문에 C 언어의 표준 라이브러리 함수의 매크로 정의, 상수, 여러 형의 입출력 함수가 포함된 헤더 파일인 #include 추가 파일분할 예시 파일 추가(소스 파일 → 추가 → 새 항목) 아래와 같이 파일명 수정 후 추가 버튼 파일 세 개 작성 num.c func.c main.c main.c 실행 함수에도 static 선언 가능 전역변수에 static 선언을 할 수 있듯이 함수에도 static 선언을 할 수 있다. static 전역변수와 마찬가지로 파일 내에서만 접근이 가능하도록 함수를 제한 static void MinCnt(void) // 외부 파일에서 호출 불가능한 함수 {.. 2020. 12. 19.
파일의 분할과 헤더파일의 디자인(27-1) 파일의 분할 파일을 그냥 나눠도 될까요? 파일을 나누는 이유도 서랍장과 비슷하다. 파일을 나눠서 각각의 파일에, 용도 및 특성 별로 함수와 변수를 나눠서 저장하면 소스코드의 관리가 용이해진다. 프로그램을 나누는 방법을 고민 예시 #include /*======num.c========*/ int num = 0; /*===================*/ /*======func.c=======*/ void increment(void) { num++; } int getnum(void) { return num; } /*===================*/ /*======main.c=======*/ int main(void) { printf("num: %d \n", getnum()); increment(); printf(".. 2020. 12. 18.