포인터 2

정글사관학교 34일차 TIL: 구조체(Struct), 동적 메모리 할당(malloc)

Ch.14 구조체(Struct) 배열에 여러 가지 정보를 매번 추가해야 한다고 생각해보자. 예컨대 도서 관리 프로그램을 만든다고 할때, i번째 책에 대한 정보를 저장한다. 책 이름, 저자, 출판사, 대출 횟수를 저장하려면 다음과 같은 i-1번째 순서에 다음과 같이 변수를 입력한다. book_name[i-1], auth_name[i-1], publ_name[i-1], borrow[i-1] 근데 더 적을 것도 없이 객체 개념을 떠올려보면 구조체가 왜 필요한지 생각하게 되는데, 이제까지 배웠던 C의 자료구조인 배열은 하나의 배열에 동일한 형만 담을 수 있다. 예를 들어, int 형 배열이면 int 값만, char 형이면 char만. 그런데 하나의 자료형에 여러 자료형을 담을 수 있다면 어떨까? 예를 들어 ch..

정글사관학교 32일차 TIL: C언어 기초(문자 입력, 포인터)

Ch.4: 문자 입력 받기 scanf: 화면(키보드)으로부터 결과를 받아들이는 입력 함수 (파이썬에서 input에 해당). 출력은 printf. scanf 역시 printf처럼 각 변수의 타입에 따라 입력받는 포맷(%d, %f, %c 등)을 달리 해야 한다. 특이사항: scanf로 double 형 변수를 입력받으려면 %lf로 받아야! printf보다 좀 더 까다로운 점은, printf는 double이나 float 모두 %f로 출력하지만 float은 무조건 %f로 입력받아야 함. 버퍼 오버플로우: 허용된 메모리 이상에 데이터를 집어넣어 발생하는 오류. 보안 상 매우 취약. ex) 최대 1바이트를 차지하는 char형 변수인 ch에 한글을 치면 오류가 난다. printf("char 형 변수 입력: "); sc..