09-- 구조

구조

C 언어는 사용자가 자신의 데이터의 다른 유형의 입력 구성의 조합으로 이루어지는 데이터 구조를 생성 할 수 있으며, 이는 구조 칭한다

구조의 유형의 문장의 일반적인 형태 :

구조 구조체 {이름}을 표 부재;

학생 구조체 
{ 
    INT NUM, 
    문자 이름 [20은] 
    문자 섹스; 
    INT 나이; 
} 
중괄호, 구조의 멤버라고, 전술 NUM, 이름, 성별, 연령이었다 포함 구조의 자식 그것은 구성원입니다. 
각 구성원은 그 진술의 타입이어야 
    멤버 이름의 유형;

테이블 칼럼 부재의 "도메인 테이블"로 불리는 도메인의 각 부재는 구조체는

 

구성 형 변수의 정의

(1) 첫 번째 문장 구조 유형, 그리고는 변수의 타입을 정의

학생 구조체 
{ 
    INT NUM, 
    문자 이름 [20이다] 
    숯 성별, 
    INT 나이; 
}; 
 구조체 student1, STUDENT2; 
구조형 변수 명 구조 명

2, 동시에 성명에서 유형의 변수를 정의

학생 구조체 
{ 
    INT NUM, 
    문자 이름 [20이다] 
    숯 성별, 
    INT 나이; 
} student1, STUDENT2, 
일반적인 형식 : 
구조체 구조체 명 
{ 
    부재 나열된 
} 변수 열 시계;

(3) 구조의 타입 정의 및 직하 형 변수의 이름을 지정하지

일반 형태 : 
구조체 
{ 
    구성원이 나열 
} 변수가 열 시계;

참고 : 구조 유형 이름의 회원은 프로그램에서 같은 변수 이름이 될 수 있지만, 그들은 같은 객체를 대변하지 않습니다

 

구조 변수가 초기화된다 참조

(1) 구조의 변수의 정의는 그 멤버에게 초기화 할 때

도 2를 참조하면, 구조 부재 변수 값, 참고로 인용 될 수있다 :

구조 변수 멤버

(3) 그 자체가 다른 유형에 속하는 구조를 갖는 구조체의 유형은 조작자의 여러 구성원의 사용은 최하위 또는 액세스 할당에, 스테이지, 스테이지의 최하위 부재를 찾는 경우 작업.

기준 부재에있어서

student1.num (NUM의 구조 변수의 학생 회원) 
student2.birthday.month 
(회원의 달 student2 회원 생일 구조 변수)

도 4에서, 구조 부재는 변수 계산 될 수있다

student2.score = student1.score (할당 연산자) 
SUM = student2.score student1.score + (가산기) 
(더하기 연산에서) student2.age ++

(5) 구조 변수의 같은 종류가 서로에게 할당 될 수있다

student2 = student1

6, 변수 멤버의 주소 구조를 참조 할 수 있습니다, 당신은 구조 변수의 주소를 참조 할 수 있습니다

scanf와 ( "%의 D", student2.score) ( 의 student2.score 입력 값) 
의 printf ( "%의 D", STUDENT2) (시작 주소 STUDENT2의 출력 가변 구조)

어드레스 구성 가변 변속기의 주요 매개 변수의 함수로서 어드레스 구성 변수

 

구조를 사용하여 배열

구조 변수 데이터 조작을 필요로 10 명이 경우, 분명하게 배열 표기 연관된 데이터 세트에 저장 될 수 있으며,이 구조의 배열

구조 일반적인 형태의 배열을 정의 :

. (1) 
  구조체 구조체 명 
    {부재} 표 배열 이름 [배열 길이] 
2 
     구조를 선언하고이 유형의 구조 배열을 정의 
      구조 배열 이름 [어레이 크기]의 형 
      구조체 인 리더 : 등을 [3]; // 리더 구조 배열 이름

배열 구조의 초기화 배열 플러스 나중에 정의된다 :

} = {초기 값 테이블 컬럼;

例如 : 구조체 인 리더 [3] = { "리"0 "장"0 "왕", 0};

 

구조 포인터

구조체 포인터 변수 구조에 대한 포인터이며, 구조 변수의 시작 주소는 이러한 구조의 변수에 대한 포인터이다.

구조 변수의 개시 어드레스는 구조 변수, 포인터 변수 다음 포인터 변수 포인트 저장되어있는 경우.

가변 구조 포인터

오브젝트 포인터 변수 구조 변수 포인트 구조 포인트는 어레이 소자 구조에서 지시 될 수있다.

기본 타입 포인터 변수는 구조 변수의 동일한 유형이어야합니다.

예를 들면 : // PT PT 형 구조체 학생 또는 어레이 요소의 변수에 관한 수있다 * 구조체 학생
구조체 학생 
    { 
        긴 NUM, 
        문자 이름 [50] 
        숯 섹스, 
        플로트 점수; 
    } 
    구조체 학생 stu_1 // 형 구조체 학생 stu_1의 가변 정의 
    구조체 학생 * P를 // 데이터 포인터 변수 P 구조체 학생 유형을 정의 
    및 stu_1 = P; 
    의 printf ( "NO : LD % \ nname이 % S \ nsex %의 C \ NSCore :. 5.lf % \ N-" 
        stu_1.num, stu_1.name, stu_1.sex, stu_1.score); 
                등가 
    상기의 printf ( ". % LD \ nname이 % S \ nsex : % C \ NSCore 5.lf % \ N- NO" 
        (* .num의 P) (P *) .name을 (P *) .sex (* P) .score) 
, C 언어 (* P) .name을 가진 P-> 지명 허용 
P-> 이름 부재가 P에서 지적 된 구조 변수 이름 나타내는 
"->"을 상기 지점 오퍼레이터 
구조 변수 STU에 P 점은 세 종류의 사용에 이어 동일한 경우 : 
1 STU 부재 (예 : stu.name).
(2) (* P)의 멤버 명. (예 : (P *의) .name을) 
. 3, P-> 멤버 이름 (예 : P-> 명)

구조체 배열 포인터

struct Student stu[3] = {
{10101,"mao",'M',78},
{10103,"li",'F',98},
{10106,"zhang",'M',86},
};

struct Student* p; //定义指向struct Student 结构体变量的指针变量
	printf("学生的全部信息\n");
	for (p = stu; p < stu + 3; p++)
	{
		printf("%5d %-20s %2c %4d\n",p->num,p->name,p->sex,p->age);
	}

가변 파라미터의 함수로서 구조 변수와 구조에 대한 포인터

다른 함수의 변수 값의 구조, 세 가지 방법들이있다 :

  1. 매개 변수로 부재 구조 변수. 예를 들어 함수 인수로 STU [1] .num

  2. 인수로 구조 변수.

  3. 인수로 구조 변수 (혹은 배열 요소) 구조 변수 (또는 배열 요소)의 어드레스 포인터가 가리키는 파라미터를 전달한다.

게시 16 개 원래 기사 · 원 찬양 2 · 조회수 129

추천

출처blog.csdn.net/weixin_42248871/article/details/105258086