C 언어데이터 구조

16225 단어 C 언어
  • Book
  • 간단 한 코드
  • 프로 그래 밍
  • 기본 구조
  • 예비 처리 명령
  • 데이터 형식
  • 배열
  • 2 차원 배열
  • 포인터
  • 1 차원 배열
  • 포인터 배열
  • 배열 포인터
  • Malloc 함수
  • 문자 배열
  • 구조 체
  • 연합 체
  • 잘못 보고
  • 문제


  • 표 가 엉망 이 되 었 습 니 다. 아 칸 의 github, 여 기 는 정상 적 인 것 을 보 여 줍 니 다. 모두 md 파일 입 니 다.
    Book
  • 《The C Programing Language》
  • 'C Primer 제6 판'
  • 'C 와 지침'
  • 단순 코드
    
    #include 
    
    #include 
    
    int main(void)
    
    {
    
        //      
    
        printf("hello C   ~");
    
        system("pause");         //     ,      
    
        return 0;
    
    }
    
  • 주의: 빈 칸 이 아름 답 고 문장 끝 에 있 는 분점, main 의 주요 함 수 는 반드시 있 고 영문 분점, 왼쪽 괄호 가 다른 줄 (상하 정렬 보장) 이 있어 야 합 니 다.
  • 주석
  • 헤더 파일
  • 주 함수: 응용 프로그램 입구, 운영 체제 호출 프로그램의 인터페이스;한 항목 중 하나만 있 을 수 있다.
  • 내장 함수: printf... 컴 파일 러 최적화.
    
    int main(void)  // C99       ,C    
    
    {
    
      //        
    
    }
    

  • ide 파일 접미사 에 따라 컴 파일 러 를 선택 하고 cpp 는 c + 컴 파일 러 를 호출 합 니 다.
    C 프로그램 을 컴 파일 하 는 것 은 원본 파일 을 대상 으로 하 는 것 으로 각각 원본 파일 을 컴 파일 하고 해당 하 는 목표 함 수 를 얻 은 다음 에 이 목표 함 수 를 통 일 된 바 이 너 리 실행 가능 한 파일 로 연결 합 니 다.C 언어의 이러한 특성 은 프로그램의 모듈 화 를 실현 하기 쉽다.
    C 언어 원본 프로그램 - 컴 파일 러 - 바 이 너 리 목표 함수 + 시스템 라 이브 러 리 함수 및 기타 목표 함수 - 실행 가능 프로그램
    프로 그래 밍
  • 문제 분석
  • 디자인 알고리즘
  • 프로그램 작성
  • 원본 프로그램 을 편집, 컴 파일, 연결 하여 실행 가능 한 프로그램 을 얻 을 수 있 습 니 다.
  • 실행 프로그램, 분석 결과.
  • 디 버 깅, 테스트
  • 프로그램 문 서 를 작성 하고 사용자 문서 라 고도 부 릅 니 다. 프로그램 이름, 기능, 운영 환경, 프로그램의 설치, 시작, 입력 해 야 할 데이터, 사용 주의사항 등 입 니 다.

  • 기본 구조
  • 순서 구조
  • 구조 선택
  • 순환 구조
  • 예비 처리 명령
    | 지령 | 해석 |
    | —————————————- | —- |
    | 우물 include
    데이터 형식
    기본 데이터 형식, 변수 성명 은 함수 상단 에 있어 야 합 니 다.
  • int, sign (- 2 ^ 31 ~ 2 ^ 31 - 1), unsigned (0 - 2 ^ 32 - 1) 메모리: 바이트 단위 로 저장 되 며, 한 바이트 8 비트, int 는 4 바이트 입 니 다.마이너스 저장 소: 패 치: 위치 에 따라 반, + 1
    
    unsigned int a = 0;
    
    printf("%d 
    "
    , 12); // %d 10 %d 、 %o 、 %x 、%X; %u // %hd // %ld %p 16
  • float, double, 접미사
    
    float f = 123.4545; // warning:     
    
    float f1 = 123.4545f;  //    
    
  • char
  • sizeof (params): params 는 "int" 또는 변수 이름 입 니 다.
    
    sizeof( int );   // 4
    
    sizeof( short int ); // 2
    
    sizeof( long int ); // 4
    
    sizeof( char );  // 1
    
  • & 주소 찾기
  • 입 출력
    
    scanf ("%d", &a);  //   ,scanf      "
    ",scanf("%d
    "),
    scanf_s("%d", &a); printf ("%d",a);
  • 포인터 (유연)
  • | 데이터 형식 | 속성 | 인쇄 |
    | ———— | ——————————————————— | ————————– |
    | 성형 | int, short int, long int |% d |
    | 부동 소수점 형 | float (4 바이트), double (8 바이트), long double (초기 화 해 야 함) |% f,% lf (소수점 후 6 자리 유지) |
    | 문자 형 | char |% c |
    | 배열 형식 | int arr [10] char message [20] |
    | 포인터 종류 | int * p |% p |
    | 구조 체 유형 | struct tag {...} x;typedef(stddef.h) | |
    | 공용 체 유형 | | | |
    | 복수 부동 소수점 유형 | | |
    C 언어 는 완전히 모듈 화 되 고 구조 화 된 언어 로 함 수 를 프로그램의 모듈 단위 로 한다.
    C 언어 는 물리 적 주 소 를 직접 방문 할 수 있 고 비트 연산 을 할 수 있 으 며 어 셈 블 리 언어의 대부분 기능 을 실현 할 수 있 으 며 하드웨어 를 직접 조작 할 수 있다.C 언어의 이식 가능 과 하드웨어 제어 능력 이 높 습 니 다. 현재 C 언어의 주요 용도 중 하 나 는 '내장 형 시스템 프로그램' 을 작성 하 는 것 입 니 다.
    scanf, printf 는 C 언어의 표준 입 출력 함수 입 니 다.
    배열
  • 특징: 유형 이 같은 요소 로 구 성 된 요소
  • 공간 연속
  • 1 차원 배열, 아래 표 시 는 '0' 부터
  • 정의 int a [5]
  • 아래 표 시 된 방문 a [5]
  • 차이: 앞 에 유형 이 있 는 지
  • 
    int arr[10];  //         ,   10
    
    int arr01[10] = {1,2,3}; //      ,     “0”,           !!!
    
    int arr02 = {0}; //     ;
    
    int arr03 = {1,2,3};
    
    
    
    scanf ("%d", &arr[0]);  //   
    
    printf("%d 
    "
    , arr01[0]); //
  • debug 는 배열 에 저 장 된 데 이 터 를 본다
  • 배열 이름 은 상수 입 니 다. 할당 할 수 없습니다. 오른쪽 값 입 니 다. 영원히 바 꿀 수 없습니다!!공간 방출 은 배열 이름 을 통 해 배열 이름 을 다시 할당 하면 메모리 가 유출 된다.
  • C 언어 는 데이터 경 계 를 감지 하지 않 고 프로그램의 효율 을 고려 하기 때문에 코드 를 쓸 때 주의해 야 한다.
  • 배열 크기: [sizeof (arr) / sizeof (int)]
  • 디지털 주소: & a [0]
  • 주소 특수성: & a [0] + 1 (주소 1 추가, 한 유형의 크기 추가!!), 다음 가구
  • & a + 1, 전체 배열 의 길이 유닛 을 추가 하 는 것 과 같 습 니 다!!다음 동네
  • 주소 오프셋: n 개의 기본 유형의 크기
  • 주소 유형 은 포인터 유형
  • 2 차원 배열
  • 요 소 는 1 차원 배열 의 배열 로 2 차원 배열
    
    int a[3][2];  // "3"   3     
    
             // "2"         2   
    
  • 이다.
  • 행렬 에 따라 이해 할 수 있 지만 메모리 에는 현 행 으로 배 열 된 | 0 | 0 1 | 1 | 1 | 20 | 2 | | | | | | | | | | | | | | | - | - - | - - | - - | - - | - - - | - - - | - - | - - - | - - - | - - - | - - - | - - - | - - - | - - - - | - - - - | - - - - | - - | - - | - | | - 1 | 2 | 3 | 4 | | | | | | | | | | | | | | | | | | | | | | | | | | |
    
    int arr[3][2] = {1,2,3,4,5}; //      
    
  • 주소:
  • a = &a[0]
  • a[0]、a[1]、a[2]
  • a[0].[0]
  • 주소 찾기:
  • 배열 복사
  • 순환
  • 메모리 복사 memcpy (y, x, sizeof (x))

  • 포인터
  • 주소 저장 용 데이터 형식
  • 관건: 유형 (오프셋, 메모리 조작)
  • 포인터 가 공간 을 가리킨다.
  • 조작:
  • 할당
  • 주소 조작 주소 에 대응 하 는 공간
  • 메모리 조작 (읽 기, 쓰기, 주소 찾기)
  • p 는 하나의 변 수 를 가리 키 는데 * p 는 바로 이 변수 자체
  • 유형 결정 메모리 조작
  • 
    int a = 22;
    
    int *p = &a; // int      ,int   int     
    
                 // *   p       
    
                // p     
    
    
    
    printf("%p  %p
    "
    , p, &a); // a printf("%d
    "
    , sizeof(float)); // 4 printf("%d
    "
    , sizeof(double)); // 8 // int *p; * // *p , 、 、
    
    int a = 12;
    
    int *p = &a;
    
    
    
    
    
    printf("%p %d %d
    "
    ,p ,*p, a); // *p = 145; // printf("%p %d %d
    "
    ,p ,*p, a); printf("%p %p %p
    "
    ,p ,&*p, &a); //
  • 2 급 포인터
  • 
    int a = 3;
    
    int *p = &a;  // p   int*  
    
    int* *p1 = &p;
    

    1 차원 배열
  • 12
  • 
    int a[10] = {1,6,7,8,3,33,21};
    
    int *p = &a[0];
    
    // p+1   -->   a[1]
    
    
    
  • * p + + / / p + + 를 먼저 실행 하고 주소 찾기
  • p [0] = a [0], p [3] / / 주소 + 아래 에 표 시 된 접근 요소
  • 2 [p] = p [2], 하 표 연산 본질: 주소 + 하 표
  • 포인터 배열
  • 모든 요 소 는 주소
  • 링크,
  • 
    int a[2] = {1,2};
    
    int b[5]  = {7,7,8,3,2};
    
    
    
    int* p[2] = {a,b};
    
    int* p[2] = {&a[0], &b[0]};
    
    
    
    &a  //        , +1     
    

    배열 포인터
  • int (*p)[5] = &a;
  • p1 [5], 【 】 우선 순위 가
  • 보다 높 음
  • 용도: 배열 함수 매개 변수 용
  • Malloc 함수
  • malloc( n ); // n 개의 바이트 생 성!
  • memset( p, 0, 40); // 바이트 할당
  • 동적 배열
    
    int a;
    
    int *p;
    
    scanf("%d", &a);
    
    p = (int*)malloc(a);
    
  • 
    #include 
    
    #include 
    
    int main(void)
    
    {
    
        int *p = (int*)malloc(10);
    
        if(p != NULL)
    
        {
    
            printf("%p", *p);
    
            printf("%p", p[0]);
    
    
    
            free(p);  //     
    
            p = NULL;
    
        }    
    
        return 0;
    
    }  //    p[0]  
    

    문자 배열
  • NUL 로 종료, '\ 0'
  • 라 이브 러 리: string. h
  • 문자 조작
  • strlen()
  • strcpy()
  • strcmp()
  • strcat()
  • strchr() strrchr(char *string, int tar)

  • 메모리 조작
  • memcpy (void * dest, void * str, size t size) / / size 는 바이트 수 이 고 int 는 배열 길이 에서 * X4
  • 가 필요 합 니 다.
  • 매개 변수 식 void * 형, 모든 종류의 지침 은 void * 형 지침
  • 으로 전환 할 수 있 습 니 다.
  • memcmp
  • memset
  • memmove / / 중첩 이 있 습 니 다. 캐 시 저장 중간 값 을 새로 열 고 복사 합 니 다
  • 
    int strlen(int const *arr)
    
    {
    
        int length;
    
        for(length = 0 ;*arr++ !='\0';){
    
            length+=1;        
    
        }
    
        return length;
    
    }
    

    구조 체
  • 구조 (구성원 구성)
  • 경계 정렬 문제 가 존재 한다. 해결: 비교적 엄격 한 구성원 을 앞 에 두 고 메모리 낭 비 를 줄인다
    
    struct SIMPLE{
    
      float c;
    
      int a;
    
      char b;
    
    };
    
    struct SIMPLE x; 
    
    struct SIMPLE y[10], *z;
    
    
    typedef {
    
      int a;
    
      char b;
    
      float c;
    
    } Simple;
    
    Simple x;
    
    Simple y[10], *z;
    
    
    z = &x;
    
    z->a;
    
    //  ->      .    *      
    
    *p->a.b
    
  • 연합 체
    잘못 을 보고 하 다
  • error C2143: syntax error : missing ‘;’ before 'type' 은 모든 실행 가능 한 코드 앞 에 변 수 를 표시 합 니 다.일반적으로 ANSI C 나 C + + 에 서 는 실행 가능 코드 에서 변 수 를 수시로 정의 하 는 것 이 허용 되 지만 K & amp; R C 에 서 는 허용 되 지 않 기 때문에 이 오류 가 발생 한다.VC 6.0, VS 2008 은 모두 K & R C 로 C 언어 를 실현 하기 때문에 컴 파일 과정 에서 오 류 를 보고 할 수 있다.
  • scanf(“%d, %d”,&x1, &y1);, 12 로 입력 하고 두 번 째 수 치 는 난 코드 데이터 입 니 다. scanf 함수 의 입력 형식 은 설 정 된% d,% d 형식 과 일치 하기 때문에 1, 2 를 입력 하 십시오.
  • 재 귀 연산 중
  • 
    return n*jiecheng(--n);  // jiecheng(5)=24,               
    
    return n*jiecheng(n-1);  // jiecheng(5)=120
    

    문제.
  • 레지스터 변수 register char * last;??

  • 아 방 의 git

    좋은 웹페이지 즐겨찾기