티스토리 뷰
예제 1.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct book{
char name[40];
char author[40];
int price;
char *info;
};
int main(void){
struct book book1 = {"혼자 공부하는 C언어", "서현우", 21600};
struct book book2 = {"C언어 코딩도장", "남재윤", 22500};
book1.info = (char*)malloc(sizeof(char)*100);
book2.info = (char*)malloc(sizeof(char)*100);
strcpy(book1.info,"1대1 과외하듯 배우는 프로그래밍 자습서");
strcpy(book2.info,"프로그래밍은 연습으로 배우는 것이다!");
printf("도서명\t\t\t저자\t가격\t책 소개\n");
printf("%s\t\%s\t%d\t%s\n",book1.name, book1.author, book1.price, book1.info);
printf("%s\t\t\%s\t%d\t%s\n",book2.name, book2.author, book2.price, book2.info);
return 0;
}
예제 2-1.
#include <stdio.h>
struct profile{
// 길이가 20인 char 배열 name 멤버 선언
char name[20];
// int형 age 멤버 선언
int age;
};
// profile 구조체 pf를 매개변수로 받고, 반환하는 함수 input_profile 작성
// 함수 내부에는 scanf로 name, age에 값을 입력받는 코드 작성
struct profile input_profile(struct profile pf){
printf("이름 입력 : ");
scanf("%s",pf.name);
printf("나이 입력 : ");
scanf("%d",&pf.age);
return pf;
}
// profile 구조체 pf를 매개변수로 받는 함수 print_profile 작성
// 함수 내부에는 printf로 name, age를 출력하는 코드 작성
void print_profile(struct profile pf){
printf("---------------\n");
printf("이름 : %s\n",pf.name);
printf("나이 : %d\n",pf.age);
}
int main(void){
// profile 구조체 변수 pf 선언
struct profile pf;
// input_profile에 pf를 인수로 전달하여 호출하고, 리턴값을 pf에 저장
pf = input_profile(pf);
// print_profile에 pf를 인수로 전달하여 호출
print_profile(pf);
return 0;
}
예제 2-2.
✔ 구조체 변수의 주소를 받기 위해서는 구조체 포인터 변수를 사용한다.
✔ 구조체 포인터 변수에 간접 참조 연산자 * 과 멤버 접근 연산자 . 을 같이 사용한다면 우선순위에 주의하자.
✔ 구조체 포인터 변수를 사용해 멤버 변수에 접근할 때는 화살표 연산자 -> 를 사용하는 편이 편리하다.
#include <stdio.h>
struct profile{
// 길이가 20인 char 배열 name 멤버 선언
char name[20];
// int형 age 멤버 선언
int age;
};
// ★ 매개 변수로 구조체 변수의 주소 받기 ★ //
void input_profile(struct profile *pf){
printf("이름 입력 : ");
scanf("%s",(*pf).name);
// scanf("%s",pf->name);
printf("나이 입력 : ");
scanf("%d",&(*pf).age);
// scanf("%d",&(pf->age));
}
// ★ 매개 변수로 구조체 변수의 주소 받기 ★ //
void print_profile(struct profile *pf){
printf("---------------\n");
// printf("이름 : %s\n",(*pf).name);
// printf("나이 : %d\n",(*pf).age);
//화살표 연산자
printf("이름 : %s\n",pf->name);
printf("나이 : %d\n",pf->age);
}
int main(void){
// profile 구조체 변수 pf 선언
struct profile pf;
// ★함수의 인수로 구조체 변수의 주소를 전달★ //
input_profile(&pf);
print_profile(&pf);
return 0;
}
'BackEnd > C' 카테고리의 다른 글
[30일차] C언어 스터디 끝 ✨ (0) | 2021.03.14 |
---|---|
[29일차] 구조체와 연결리스트 (0) | 2021.03.14 |
[27일차] 숙제 - 코드업 1402 /1409 _동적메모리 (0) | 2021.03.11 |
[26일차] 숙제 - 코드업 1581_이중포인터 (0) | 2021.03.10 |
[25일차] 숙제 - 코드업 1460 / 1511_포인터배열 (0) | 2021.03.09 |
댓글