반응형
구조체 배열의 선언과 접근
arr[0].xPos = 10; 와 같이 구조체 배열의 멤버변수에 접근할 수 있다.
struct point
{
int xPos;
int yPos;
}
struct point arr[4]; // 길이가 4인 구조체 배열 선언
구조체 배열의 초기화
아래의 코드와 같이 배열요소 각각의 초기화 값을 중괄호로 묶어 표현한다.
struct city arr[3] =
{
{"서울", "강동"}, // 첫 번째 요소의 초기화
{"인천", "서구"}, // 두 번째 요소의 초기화
{"서울", "송파"} // 세 번째 요소의 초기화
};
구조체 변수와 포인터
아래의 코드에서 포인터 변수는 1과 2번처럼 멤버 변수에 접근할 수 있다.
struct point pos = {11, 12};
struct point* pptr = &pos; // 구조체 point의 포인터 변수 선언
// 구조체point의 포인터 변수의 멤버 변수 접근 방법
(*pptr).xPos = 10; // 1
pptr -> xPos = 10; // 2
아래의 코드처럼 사용 가능하며,
-> 연산자는 프로그래머들이 주로 사용하는 연산자이다.
(*pptr).xPos += 4; // 멤버 변수 xPos에 4를 더한다
pptr -> xPos +=1; // 멤버 변수 xPos에 1을 더한다.
포인터 변수를 구조체의 멤버로 선언할 수 있으며
아래의 코드는 그 예제이다.
struct point
{
int xPos;
int yPos;
};
struct circle
{
double radius;
struct point* center; // 구조체 변수의 멤버로 구조체 변수 선언
};
int main()
{
struct point cen = {2, 7};
double rad = 5.5;
struct circle ring = {rad, &cen};
printf("원의 반지름 : %g \n", ring.radius); // 5.5 출력
printf("원의 중심 [%d, %d] \n", (ring.center) -> xPos, (ring.center) -> yPos); // [2, 7] 출력
return 0;
}
구조체 변수 주소
구조체 변수의 주소 값과 구조체 변수의
첫 번째 멤버 변수의 주소 값은 같다.
반응형
반응형