본문 바로가기

Computer Science/따라하며 배우는 C

10 Array, Pointer 10-01. 배열과 메모리 자료형의 크기만큼 메모리가 계산된다! 10-02. 배열의 기본적인 사용방법 #define MONTHS 12 //symbolic constant, macro int main() { int high[MONTHS] = {2,5,11,18,23,27,29,30,26,20,12,4}; // Address printf("%p %p \n", high, &high[0]); for (int i =0; i < MONTHS; ++i) printf("%lld \n", (long long)&high[i]); // 10진수로 출력하여 4씩 증가하는지 확인(int이므로) printf("\n"); ///* complier doesn&#39;t check whether indices are valid!! *.. 더보기
09 function, pointer 09-01. 함수가 필요할 때 왜 함수가 필요한지, 어떤 경우에 함수가 필요한지부터 알아보자. 함수를 사용하지 않던 코드들을 함수를 사용하여 동작하도록 하는 것을 re-factoring이라고 한다. #define _CRT_NOSECURE_NO_WARNINGS #include #include // strlen() #include #define WIDTH 40 #define NAME "ChangHyun Oh" #define ADDRESS "CA, USA" void print_chars(char c, int n_stars, bool endl) { for (int i =0; i < n_stars; ++i) printf("%c",c); if (endl == true) printf("\n"); } void prin.. 더보기
08 Input Output 08-01. 입출력 버퍼 버퍼란 입력을 받거나 출력을 할때, 한꺼번에 모아서 입출력을 하여 효율성을 높게 해준다. 전반적으로 다양한 경우에서 사용된다. 보면, 우리는 hello를 입력했고 한 글자씩 입출력이 되는 것을 예상할 것이다. 하지만 실제 실행결과를 보면, hello 전체를 입력, 출력함을 알 수 있을 것이다. 08-02. End Of File(EOF) ASCII code는 양수밖에 없다. 하지만 왜 unsigned int가 아니라 int로 변수를 선언해 입력을 받을까? 이유는 EOF 때문이다! EOF는 -1로 define되어 있다! int main() { int c; while((c = getchar()) != EOF) //End Of File putchar(c); } 또 하나 중요한 개념이 있.. 더보기
07 If문 07-01. if #define _CRT_SECURE_NO_WARNINGS #include int main() { int number; printf("input a positive integer : "); scanf("%d", &number); // Todo: print even or odd if (number % 2 ==0) printf("Even"); else if (number % 2 != 0) printf("ODD"); return 0; } 07-02. getchar(), putchar() example char을 입력받아서 출력하기 int main() { /* 1. Introduc getchar(), putchar() 2. Use while loop to process char sequences.. 더보기
06 For 06-11. comma operator #define _CRT_SECURE_NO_WARNINGS #include int main() { for (int n=1, nsqr = n*n; n i++ is operated before comma printf("%d %d \n", i, j); } 제논의 역설 시뮬레이션 예제 절대 따라갈 수 없는 토끼와 거북이 이야기를 들어본 적이 있을 것이다. int main() { /* Simulatino of Moving object */ const double speed = 1.0; const unsigned repeat_max = 7; // 최대 반복 횟수는 보통 양의 정수이기때문에 함(걍 int써도 됨) double dt = 1.0; double time = 0.0; /.. 더보기
04 연산자 반복 루프와의 첫 만남 // Case 1: goto문 int n = 1; label: printf("%d\n", n); n = n + 1; if (n == 10) goto out; goto label; // 쓸일이 없을 것. out: return 0; // Case 2: while 문 int main() { int n = 1; while (n < 11) { printf("%d\n", n); n = n + 1; } return 0; } 대입 연산자와 몇 가지 용어들 메모리에 있는 Object들을 Object Data라고 부른다.(int i) 어떤 데이터가 메모리 안에 존재하고 있다면 그것이 Data object이다. 1024는 말 그대로 상수를 의미하지, 어떤 메모리 내 데이터를 의미하지 않는다. 반면에,.. 더보기
03 문자열과 형식 맞춘 입출력 문자열 입출력하기 #define _CRT_SECURE_NO_WARNINGS #include int main() { char fruit_name; //stores only one character printf("what is your fruit? \n"); scanf("%c", &fruit_name); // & printf("You like %c \n", fruit_name); return 0; } 다음과 같이 문자열 한 글자를 입력받을 수 있다. 여러 문자열을 입력받고 싶다면 아래와 같이 입력하면 된다. #define _CRT_SECURE_NO_WARNINGS #include int main() { char fruit_name[40]; //stores only one character printf("wh.. 더보기
02 데이터와 C언어 변수와 상수 int angel = 1004; 변수: 어떤 값이 저장될 수 있는 메모리 공간 리터럴 상수(literal constant): 문자 그대로의 의미를 갖고 값이 변하지 않는 수 scanf() 함수의 기본적인 사용법 #include int main() { int i = 0; scanf("%d", &i); // & : ampersand printf("value is %d \n", i); return 0; } 이렇게 코드를 짠 후 build를 하면 오류가 나온다. 이를 해결하기 위해서는 2가지 방법이 있다. 코드 제일 위에 #define _CRT_SECURE_NO_WARNINGS 삽입 project - properties - C/C+ - preprocessor에 define _CRT_SECURE_NO.. 더보기