4월 29일 학습 내용

박도일·2022년 4월 29일
0

4월 학습내용

목록 보기
17/17

변수랑 친해지자

  • 단순 상수(특히 아스키코드 관련)를 지정하는 것 보다 그 상수에 이름을 붙혀서 사용하는 것이 낫다.
    ex)
      if (text[i] > 'a')
      {
          // text[i] -= 32; 하는것보다
          int DIFFERENT_BETWEEN_UPPER_AND_LOWER = 32;
          text[i] -= DIFFERENT_BETWEEN_UPPER_AND_LOWER;
          //로 사용하는게 더 바람직하다.
      }

타입재정의(추후에 다시 학습할 예정)

  • typedef char byte; => char형을 byte로 재정의

포인터타입(간단하게)

  • 다른 타입의 객체를 참조할 수 있는 타입
  • 데이터를 메모리 주소값으로 해석
  • Type* Identifier;
int num = 10;
int* p = #
왜 포인터를 사용해야하는가
  • 메모리에 접근하는 방법은 2가지가 있다.
    • 직접 참조(Direct Reference / Direct Access) : 메모리 주소에 직접 접근하는 것
    • 간접 참조(Indirect Reference / Indirect Access) : 메모리 주소를 포인터를 통해 접근 하는 것
  • Scope : 프로그램이 식별자를 찾을 수 있는 영역
    • Block Scope : => Local Variable(지역변수)
    • File Scope : => Global Variable(전역변수)
  • 포인터의 크기 : x86 => 4byte, x64 => 8byte
  • +,- : 메모리 주소를 가리키고 있는 타입의 크기만큼 옮긴다.
    int arr[2] = { 10, 20 };
    int* p= arr;
    p = p + 1; //&arr[1]
    p = p + 2; //&arr[0]

    char* phc
    pch + 1; //1바이트만큼 뒤로
    pch --1; //1바이트만큼 앞으로
    // 증감연산자도 사용 가능. (단, * / 는 불가능)
    p++;
    p--;
  • a[b] => *(a + b);
주의(연산자 우선 순위)
  • 역참조 연산자와 증감 연산자를 결합할 때 연산 순서를 유의해야 한다.

void 타입

  • 모든 타입을 담을 수 있는 타입.
  • 단, 연산이 아무것도 안된다. (어떤 타입을 다루고 있는지 확인할 수 없으니)

문자열 함수

  • 무조건! 함수처리 할 문자열은 NULL로 끝나야 하며!! 크기가 충분해야한다!!
  • strcpy() : 문자열 복사
    • strcpy(문자열1, 문자열2) -> 문자열2를 문자열1에 복사
  • strcat() : 문자열 붙혀넣기
    • strcat(문자열1, 문자열2) -> 문자열2를 문자열1 뒤에 붙혀넣기
  • strlen() : 문자열 길이 반환
    • Size_t length = strlen(문자열) -> length라는 변수에 문자열의 길이를 반환
  • strcmp() : 문자열 비교
    • strcmp(문자열1, 문자열2)
      • 양수 : 문자열 1이 더 크다(빠르다)
      • 0 : 문자열 1, 2가 서로 같다
      • 음수 : 문자열 2가 더 크다(빠르다)
  • strchr() : 문자찾기(중복된 경우 처음만 판단)
  • strrchr() : 뒤에서부터 문자찾기 방식은 strchr와 동일

함수

  • 반복되는 실행부분을 하나로 묶어서 함수로 정의하고 사용한다.
  • 매개변수 : 함수에서 사용되는 변수. 함수 외부에서 입력값을 받기 위해 사용.
  • 함수를 호출한다는 것은 코드를 재사용 하기 위함이다.
  • 함수를 호출할때 호출한 사람을 호출자(Caller), 호출된 함수를 피호출자(Callee)라고 한다.
  • 호출자에게 함수에서 계산한 결과를 '반환' 해 줄 수 있다.
  • 반환은 return문을 사용하며 반환값은 반환 타입과 일치 해야 함.
  • 반환하는 것이 없다면 void 타입을 사용
  • 인자 : 매개변수의 초기값
int sum(int x, int y) //매개변수
{
    return x + y; //반환
}

int main()
{
    int a = sum(1,2); //1, 2는 인자.
}
교수님 요구사항
  • 백준 문자열(함수 제외)까지 풀기
  • 배웠던거 천천히 복습하기
  • 자유자재로 실습하기
  • 문자열 함수 (token제외) 실습 만들어보기
profile
개발자가 되고 싶은 사람

0개의 댓글

관련 채용 정보