typedef
typedef : 이미 정의된 내용을 재정의
typedef int integer;
<- 프로그램 코드에서 int를 integer로 사용하겠다는 의미!!!
구조체 선언에서 typedef와 함께 사용하면 프로그램 코딩이 효율적!!!
#include <iostream>
#include <string>
using namespace std;
int main()
{
typedef struct
{
char Name[30];
char MPhoneNum[20];
} SAM;
SAM Friend;
strcpy_s(Friend.Name, 30, "김갑돌");
strcpy_s(Friend.MPhoneNum, 20, "010-8741-0000");
SAM Friend1;
Friend1=Friend;
cout << Friend.Name << endl;
cout << Friend.MPhoneNum << endl;
cout << Friend1.Name << endl;
cout << Friend1.MPhoneNum << endl;
return 0;
}
구조체 형 변수 초기화
변수 선언시 구조체 멤버 순서에 맞게 값을 할당하여 표시할 수 있음
헤더파일
헤더파일의 역할
프로그램에 필요한 선언 내용
예) iostream.h의 경우 프로그램 작성에서 입출력관련 동작을 수행할때 프로그램 파일에 포함시키면 간단하게 관련 내용을 컴파일러가 인지함!!
C++ 표준 라이브러리는 확장자를 명시하지 않는 것을 원칙으로 함 (1998년 표준)
프로그램 시작 부분에 #include <헤더파일이름>으로 포함
사용자가 작성한 헤더파일은 확장자를 표기하고 #include “헤더파일이름.h”로 표기
구조체는 자료형 선언이므로 일반적으로 헤더에 포함시키는 것이 적절함!!
아래를 헤더파일에 새항목으로 “config.h”라는 이름으로 추가해보자.
#include <iostream>
#include <string>
using namespace std;
typedef struct
{
char Name[30];
char MPhoneNum[20];
} SAM;
그리고 아래와 같이 사용해보자. (config.h 헤더파일이 당연히 블로그에는 적용되지 않아 주석 처리 되었다)
#include "config.h“
int main()
{
SAM Friend;
strcpy_s(Friend.Name, 30, "김갑돌");
strcpy_s(Friend.MPhoneNum, 20, "010-8741-0000");
SAM Friend1;
Friend1=Friend;
cout << Friend.Name << endl;
cout << Friend.MPhoneNum << endl;
cout << Friend1.Name << endl;
cout << Friend1.MPhoneNum << endl;
return 0;
}
구조체 배열
구조체 형 배열
연속적인 기억장소 할당
#include <iostream>
using namespace std;
typedef struct
{
char Name[30];
char MPhoneNum[20];
} SAM;
// 위는 아까전에 배운 것처럼 헤더파일에 넣고 #include"헤더파일명.h" 해도된다
int main()
{
SAM arr[5]={"김갑돌", "010-8741-0000",
"이치수", "010-3456-0000",
"정대호", "010-8765-0000",
"한치욱", "010-1234-0000",
"박사랑", "010-4567-0000"};
int i;
cout << "기본 크기 : " << sizeof(SAM) << endl;
for (i=0; i<5; i++)
cout << "arr[" << i << "]의 주소 : " << &arr[i] << endl;
for (i=0; i<5; i++)
cout << "이름 : " << arr[i].Name << ", 휴대폰 번호 : " << arr[i].MPhoneNum << endl;
return 0;
}
구조체 포인터
구조체 포인터
동일한 구조체형 변수의 주소를 저장
구조체 포인터의 멤버 참조
(*구조체형 포인터 변수).멤버
구조체형포인터변수->멤버
#include <iostream>
using namespace std;
typedef struct
{
char Name[30];
char MPhoneNum[20];
} SAM;
int main()
{
SAM a={"김행복", "010-7777-3333"};
SAM *pa;
pa=&a;
cout << "이름: " << a.Name << endl;
cout << "이름: " << pa->Name << endl;
// cout << "이름 : " << (*pa).Name << endl; 과 같다
cout << "전화번호: " << pa->MPhoneNum << endl;
return 0;
}
'C > [언어본색] C 기초' 카테고리의 다른 글
[언어 본색] #23 5장 - 구조체 (0) | 2021.10.12 |
---|---|
[언어 본색] #21 4장 - 동적 할당 (0) | 2021.10.11 |
[언어 본색] #20 4장 - 포인터: 메모리 주소 (0) | 2021.10.11 |
[언어 본색] #19 4장 - 문자열 (0) | 2021.10.11 |
[언어 본색] #18 4장 - 배열 (0) | 2021.10.01 |