iOS 단계 학습 10 일 째 노트 (구조 체)

23642 단어 ios
iOS 학습 (C 언어) 지식 포인트 정리
데이터 구조
1) 개념: 데이터 구 조 는 컴퓨터 프로그램 에서 작 동 하 는 대상 인 데이터 와 데이터 요소 간 의 상호 관계 와 연산 을 말한다.
2) 구조 체 는 반드시 struct 키워드 수식 이 있어 야 한다.
인 스 턴 스 코드:
 1 struct Person{
 2     char name[20];
 3     int age;
 4     float height;
 5 };
 6 
 7 int main(){
 8     struct Person Tom={"Tom",22,180};//struct Person      
 9     //Tom     
10     Tom.age=33;//          
11     printf("  =%s;  =%d;  =%.2f
",Tom.name,Tom.age,Tom.height); 12 return 0; 13 }

3) type: def 를 사용 하여 구조 체 를 수식 하고 type: def 를 사용 하지 않 는 구조 체 와 차이 점 은 type: def 를 수식 하 는 구조 체 는 struct 를 추가 하지 않 아 도 사용 할 수 있다 는 것 이다.
인 스 턴 스 코드:
 1 typedef struct Person{
 2     char name[20];
 3     int age;
 4     float height;
 5 }stPerson;
 6 
 7 int main(){
 8     stPerson Jack={"Jack",36,178};//struct stPerson      
 9     //Jack     
10     Jack.age=25;//          
11     printf("  =%s;  =%d;  =%.2f
",Jack.name,Jack.age,Jack.height); 12 return 0; 13 }

4) 구조 체 집합의 사용 
인 스 턴 스 코드:
 1 int main(){
 2    //       ,     stPerson      
 3     stPerson stu[10]={};
 4     stPerson *pstu;
 5     printf("%s",stu[0].name);
 6     for (int i=0; i<10; i++) {
 7          sprintf(stu[i].name, "Jack%d",i);
 8          stu[i].age=10+i;
 9          stu[i].height=170+i;
10     }
11     pstu=stu;
12     //(*pstu).name    pstu->name;
13     //pstu+i       i   
14     //    ->             
15     int len=sizeof(stu)/sizeof(stPerson);
16     for(int j=0; j<len; j++) {
17     printf("  =%s;  =%d;  =%.2f
",(*pstu).name,(*pstu).age, (*pstu).height); 18 pstu++; 19 } 20 return 0; 21 }

5) 구조 체 바이트 정렬  #pragma pack(n)  n 은 1, 2, 4, 8, 16 이 될 수 있다.시스템 정렬 모드 를 설정 하고 구조 모든 구성원 중 최대 자 와 정렬 모드 를 비교 하여 작은 사람과 정렬 합 니 다.
인 스 턴 스 코드:
 1 typedef struct
 2 {
 3     char ch[3];//     
 4 }aa;
 5 
 6  typedef struct
 7 {
 8     char ch[3];
 9     short b;//2    
10 }ab;
11 
12 typedef struct
13 {
14     char ch[3];
15     short b;
16     int c;//  4    
17 }ac;
18 
19 typedef struct
20 {
21     char ch[3];
22     short b;
23     int c;
24     long l;//  8    
25 }ad;
26 
27 typedef struct
28 {
29     char ch;
30     long l;
31 }ae;
32 
33 int main()
34 {
35     printf("sizeof(aa)=%lu
",sizeof(aa));//3 36 printf("sizeof(ab)=%lu
",sizeof(ab));//6 37 printf("sizeof(ac)=%lu
",sizeof(ac));//12 38 printf("sizeof(ad)=%lu
",sizeof(ad));//24 39 printf("sizeof(ae)=%lu
",sizeof(ae));//16 40 return 0; 41 }

6) 매 거  개념: 이름 이 붙 은 전체 상수 의 집합, 매 거 진 성명 의 키 워드 는 enum 입 니 다.
 주의 점:
           1. 매개 요소 간 에 "," 분리 "
           2. 첫 번 째 요소 가 할당 되 지 않 으 면 기본 값 이 0 이 고 그 다음 요 소 는 순서대로 1 을 추가 합 니 다.
           3. 매 거 진 은 unsigned int 유형의 포장 집합 입 니 다.
           4. 매 거 진 것 은 상수 이 고 매크로 \ # define 와 비슷 합 니 다.
           5. 매 거 된 이름 은 이름 을 바 꿀 수 없습니다.
 인 스 턴 스 코드:
 1 enum weekday
 2 {
 3     Monday,
 4     Tuesday,
 5     Wednesday=10,//      ,      +1
 6     Thurday,
 7     Friday=2,//           
 8     Saturday,
 9     Sunday
10 };
11  
12 int main()
13 {
14     enum weekday day= Saturday;//enum weekday     ,day   
15     printf("day=%u,sizeof(day)=%lu
",day,sizeof(day));// :6,4 16 }

7) typedef 용법 설명;type: def 오래된 형식의 새로운 이름, 형식 에 별명 을 지어 줍 니 다.
인 스 턴 스 코드:
 1 typedef unsigned long ul;
 2 typedef int *intp;
 3 int add(int a,int b){
 4     return a+b;
 5 }
 6 
 7 //               pfunc
 8 typedef int (*pfunc)(int,int);
 9 int main()
10 {
11     ul number= 100;
12     int a = 20;
13     intp p = &a;
14     pfunc pf = add;
15     printf("number=%lu
",number); 16 printf("*p=%d
",*p); 17 printf("add=%d
",pf(10,20)); 18 return 0; 19 }

8) 구조 연합 체, 일반 연합 체 는 둘 중 하 나 를 선택한다. 즉, 연합 체 에는 보통 두 개의 요소 만 존재 하고 시스템 은 초기 화 할 때 그 중의 한 개의 메모리 가 비교적 큰 것 만 선택 하여 할당 한다.
인 스 턴 스 코드:
 1 typedef struct Person// Person    ,         
 2 {
 3     char name[20];//    
 4     int age;
 5     int height;
 6     union{
 7         int stuid;
 8         char workname[20];
 9     };//       ,      .
10     //         
11     //
12 }stPerson;
13  
14 int main()
15 {
16     stPerson xiaoli={"xiaoli",18,180,97};
17     stPerson xiaozhu={"kingkong",26,160,60};
18     //
19     printf("sizeof(stPerson)=%lu
",sizeof(stPerson)); 20 printf("name:%s,age:%d,height:%d,stuid:%d
",xiaoli.name,xiaoli.age,xiaoli.height,xiaoli.stuid); 21 22 // 23 sprintf(xiaozhu.workname,"%s","kingkong"); 24 printf("name:%s,age:%d,height:%d,workname:%s
",xiaozhu.name,xiaozhu.age,xiaozhu.height,xiaozhu.workname); 25 return 0; 26 }

좋은 웹페이지 즐겨찾기