//포인터를 통한 구조체 참조 #include struct student { int number; char name[20]; double grade; }; int main(void) { struct student s = { 2007001, "홍길동", 4.3 }; struct student* p; p = &s; printf("학번=%d 이름=%s 학점=%f\n", s.number, s.name, s.grade); printf("학번=%d 이름=%s 학점=%f\n", (*p).number, (*p).name, (*p).grade); printf("학번=%d 이름=%s 학점=%f\n", p->number, p->name, p->grade); return 0; }
포인터

주어진 메뉴를 출력하는 알고리즘을 구현해 보았다. 문자열을 배열로 나타내면 너무 많은 배열의 크기가 필요하기 때문에 포인터를 이용하여 표현한다. 여기서 유의할 점은, 포인터 배열에 문자열이 들어갈 경우 출력할 때 *menu[i]로 하지 않고 menu[i]라고 한다. #include int main(void) { char* menu[5] = { "init", "open", "close", "read", "write" }; for (int i = 0; i < 5; i++) printf("%d 번째 메뉴: %s\n", i, menu[i]); return 0; } 출력하면 다음과 같은 결과가 나온다.

두 점 (x1, y1), (x2, y2)를 지나는 일차함수의 기울기와 y절편을 구하는 알고리즘을 구현해 보았다. #include int get_line_parameter(int x1, int y1, int x2, int y2, float* slope, float* yintercept) { if (x1 == x2) return -1; else { *slope = (float)(y2 - y1) / (float)(x2 - x1); *yintercept = y1 - (*slope) * x1; return 0; } } int main(void) { float s, y; if (get_line_parameter(2, 6, 5, 20, &s, &y) == -1) printf("에러\n"); else printf("기..

배열로 입력받은 값을 거꾸로 출력하는 알고리즘을 구현해보았다. #include void print_reverse(int a[], int n); int main(void) { int a[] = { 10, 20, 30, 40, 50 }; print_reverse(a, 5); return 0; } void print_reverse(int a[], int n) { for (int i = n - 1; i >= 0; i--) { printf("%d\n", a[i]); } } print_reverse 함수를 포인터로 구현할 수도 있다. #include void print_reverse(int a[], int n); int main(void) { int a[] = { 10, 20, 30, 40, 50 }; print_..