혼자 공부하는 C

silver_bean·2022년 6월 1일
0

혼공단

목록 보기
13/16

잡담

진짜로 "Long time no C"가 되었다. 마지막 혼공단 날짜가.. 2월 27일ㅋ...ㅋㅋㅋ..
그리고 혼공자바 과제 수정하고 나서.. 한달이 되어갈듯..?
자바랑 C랑 번갈아가면서 포스팅할 큰 그림을 그렸지만, 자바는 책이 다 끝이 나버린걸 마지막 과제를 하면서 알았다!
우선 다음 혼공단 시작하기까지 복습과 C언어를 해나갈 예정.
오늘 포스팅 주제도 사실 저번 주말에 하려했다.
작심삼일처럼 세번이라도 해보자고..!

오늘의 주제

  • Chapter 10 배열과 포인터 - 1. 배열과 포인터의 관계

CH.10-1 배열과 포인터의 관계

  • 배열
    : 자료형이 같은 변수를 메모리에 연속으로 할당
  • 배열명 = 첫 번째 요소의 주소
  // 배열 array
  int array[3];
  
  // 배열명은 첫 번째 요소의 주소
  array == &array[0]
  • 배열명의 정수 덧셈은 가리키는 자료형의 크기를 곱하고 더한다
  // &array[2], array[2]의 주소
  array + 2	
  array + ( 2 * sizeof(*array) ) == array + ( 2 * sizeof(array[0]) )
  
  // array[2], array[2]의 값
  *(array + 2)
  • 배열명과 포인터의 사용
  // 포인터 pa에 배열명 저장
  int *pa = array;
  
  // 포인터를 배열명처럼 사용
  pa[1] == array[1]
  
  // array[2]의 요소에 10 대입
  pa[2] = 10;
  • 배열명과 포인터의 차이
    - 배열명상수이므로 값 변경이 불가하다.
    - 포인터는 가리키는 자료형이 같으면 값 변경이 가능하다.
    = 값의 차 / 가리키는 자료형의 크기

    		// 배열명으로 연산 불가
    		// array++;
    		// array = array + 10;
    
    		// 포인터의 연산
    		pa++ == pa + 1 == &array[1]
    		(pa+2) - pa == &array[2] - &array[0]
    		== (array[2] - array[0]) / sizeof(*array)

    = 포인터의 뺄셈배열 요소 간의 간격 차이를 의미한다.


다음 주제

  • Chapter 10 배열과 포인터 - 2. 배열을 처리하는 함수

0개의 댓글