[Do it! 자료구조와 함께 배우는 알고리즘 입문 C언어편] 02장 기본 자료구조
1. 책 DB를 넣어주세요.
2. 나의 스터디 흔적을 사진으로 보여주세요.
3. 이번 스터디에서 특별히 좋았던 점이나 어려웠던 점이 있었나요? 새로 알게된 부분이 있다면 알려주세요. 다음에 이 책으로 공부할 스터디룸의 독자들에게 큰 도움이 됩니다.
- (p.45) 전체 배열이 할당된 메모리 크기 : sizeof(a)
- (p.45) 첫 요소가 할당된 메모리 크기 : sizeof(a[0])
- (p.45) 배열의 요소 개수 : sizeof(a) / sizeof(a[0])
- (p.47) 메모리 동적할당 함수
#include <stdlib.h>
x = calloc(요소 개수, 요소 크기); → 배열의 크기를 동적으로 할당 받고 싶을 때 사용
x = malloc(크기);
free(x);
- (p.55) 포인터 p가 배열 a의 첫번째 요소를 가리킬 때, 그 포인터는 배열처럼 동작 가능
다음 4개는 모두 같은 표현
a[n]
*(a+n)
p[n]
*(p+n)
- 매크로 NULL의 정의
# define NULL 0
# define NULL (void *)0
값 0을 갖는 모든 정수, 상수, 상수식을 void *로 형 변환한 식
공백 포인터 상수
- (p.60) 난수 생성
# include <time.h>
# include <stdlib.h>
srand(time(NULL)); → srand로 난수의 seed를 변경, time함수로 seed값을 난수로 초기화
x = 100 + rand() % 90; → rand로 난수를 생성 (본 식은 100부터 189까지의 난수를 생성하는 식)
- (p.65) 배열 역순 정렬 핵심 3가지
1) 교환 횟수는 n/2번
2) 교환 대상은 i번째와 n-i-1번째
3) 피신용 임시 변수 1개 필요
- (p.67) 함수 형식 매크로를 쓸 때 ;를 사용하고 싶어서 처음부터 do~while(0)을 써서 정의함
- (p.76) 소수 n 찾기
원리 - 2부터 n-1까지 모든 정수로 나눴을 때 != 0
개선1 - 2부터 n-1까지 모든 소수로 나눴을 때 != 0
개선2 - 2부터 x까지 모든 소수로 나눴을 때 != 0 (소수 x는 x^2 <= n을 만족하는 최댓값)
- (p.90) 구조체 선언
"struct xy"는 하나의 자료형인 셈이고 매번 다 쓰기 귀찮으니 typedef struct xy XY; 처럼 사용
방법1 | 방법2 |
struct xy { int x; long y; }; typedef struct xy XY; |
typedef struct { int x; long y; } XY; |
struct xy a; 또는 XY a; |
XY a; |
4. 열심히 실습한 코드를 저장해 첨부해 주시거나 자랑할만한 스크린샷이 있다면 올려주세요.
Q 01
Q 02
Q 03 - 굳이 ave변수를 선언할 필요 없음 / ★ 처음부터 sum변수 등 각종 변수를 double로 선언하면 됨
Q 04 - time(1)이 아니라 time(NULL) / a[n]과 같은 표현은 a+n
Q 05
Q 06
Q 07
Q 08 - %s를 쓰려면 해당 배열은 반드시 char형, 그렇지 않으면 for문을 써서 요소를 하나하나 출력하기
Q 09
Q 10
★ 배열의 모든 요소의 순서를 뒤섞는 shuffle 함수
Q 11
Q 12
Q 13