C 언어 회고 (8, 구조 체, 연합 / 공용 체, 매 거) - iOS 개발 기초

설명: UI 고급 지식 을 배우 기 전에 최근 10 여 일간 C 언어 를 되 돌아 보고 주로 'C 프로 그래 밍 (담 호 강 버 전)' 에 따라 살 펴 본다.일부 지식 점 (세부 사항 이 아니 라 지식 개인 이 중요 하거나 잊 기 쉬 운 것) 을 정리 하고 방과 후 문제 나 전형 적 인 연습 문 제 를 골 라 코드 를 작성 하 는 연습 을 합 니 다.
제9 장 사용자 스스로 데이터 형식 만 들 기
1. 구조 체: 사용자 가 서로 다른 유형의 데이터 로 구 성 된 조합 체 의 데이터 구 조 를 구축 하여 지식 점 을 더욱 직관 적 으로 느끼 기 위해 각종 지식 점 을 코드 와 주석 형식 으로 설명 한다.
#include <stdio.h>

struct Date {
    int month;
    int day;
};

struct Student {
    char name[20];
    int age;
    char sex;
    struct Date Birthday;   //            
}student1 = {"Nong Chaozhe",21,'M',{2,18}}; //         

int main(int argc, const char * argv[]) {
    struct Student student2 = student1; //           
    int age = 10; //                  ,         

    printf("student1:%s,%d ,%c,%d %d 
"
,student1.name,student1.age,student1.sex,student1.Birthday.month,student1.Birthday.day); // // struct Date festival[3] = {1,1,{5,1},10,1}; // , , , printf(" :%d.%d
"
,festival[0].month,festival[0].day); // struct Student *p = NULL; p = &student2; printf("student2:%s,%d ,%c,%d %d
"
,(*p).name,p->age,p->sex,(*p).Birthday.month,(*p).Birthday.day); // , student2.name // struct Date *p1 = NULL; for (p1 = festival; p1 < festival+3; p1++) { printf(" :%d.%d
"
,p1->month,p1->day); } //p1+1 p1 festival , festival[1]; // // , printf("%lu
"
,sizeof(student1)); // 37 (20+4+1+(2*4)=33), 36 // “ ” ( 4 1 )。 , 3 , , 33, 36。 4 。 return 0; }

output:
student1:Nong Chaozhe,21 ,M,2 18 
  :1.1
student2:Nong Chaozhe,21 ,M,2 18 
  :1.1
  :5.1
  :10.1
36

2. 공용 체 / 연합: 몇 개의 서로 다른 변수 로 하여 금 같은 메모리 의 구 조 를 공유 하 게 하고 지식 점 을 더욱 직관 적 으로 느끼 기 위해 각종 지식 점 을 코드 와 주석 형식 으로 설명 한다.
#include <stdio.h>

union Data {
    int i;
    char ch;
    float f;
}a = {97};             //             ,         
//  !:a = {1,'a',1.5}        3   
//                      ,              ,         ,             

int main(int argc, const char * argv[]) {
    printf("%d
"
,a.i); // 97 printf("%c
"
,a.ch); // ‘a’ printf("%f
"
,a.f); // 0.0000 // 97 a.i, , “01100001”。 。 union Data b = {.ch = 'A'}; // b.f = 1.5; b.i = 121; printf("%c
"
,b.ch); // ‘A’, 121 ASCII b = a; // printf("%p,%p,%p,%p
"
,&a,&a.i,&a.ch,&a.f); //4 printf("%lu
"
,sizeof(a)); // return 0; }

output:
97
a
0.000000
y
0x100001018,0x100001018,0x100001018,0x100001018
4

3. 매 거: 가능 한 값 을 일일이 열거 하고 변수의 값 은 열거 한 값 의 범위 에 만 국한 된다.시작지식 점 을 더욱 직관 적 으로 느끼 기 위해 각종 지식 점 을 코드 와 주석 형식 으로 설명 한다.
#include <stdio.h>

typedef enum {
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}Weekday;   //  typedef      


int main(int argc, const char * argv[]) {
    Weekday date = Monday;
//     date = 0;                ,C                  0,1,2,3,4,5……
    printf("%d
"
,date); // ‘0’ // , =,>,<,== if (date == Monday) { printf("Yes
"
); } return 0; }

output:
0
Yes

좋은 웹페이지 즐겨찾기