안녕하세욥~
오늘은 저번에 배운 1편에 이어 나머지 공식들을 알아보겠습니다~
1편과 마찬가지로 실무나 원리를 설명하는 글이 아니라, 자격증 시험 문제를 풀때 더 빠르고 정확하게 풀기 위한 공식과 풀이 방법을 정리한 글입니다. 참고하셔서 공부하시면 좋겠습니다~
구조체 포인터
구조체 포인터는 . 이 아닌 ->
일반 구조체를 사용할 경우 아래 이미지 처럼 . 을 사용합니다 (ex: book.price)

구조체 포인터를 사용할 경우 아래 이미지 처럼 ->를 사용합니다. (ex:book->price)

ptr->member == (*ptr).member
*ptr 에 괄호를 쓰는 이유는 *ptr.member 로 사용하면 컴파일러가 *(ptr.member) 로 해석하기 때문입니다.
. 연산자가 * 보다 우선순위가 높기 때문에 괄호를 사용해야 합니다.

번외 – 함정 모음
포인터 공식은 아니지만, 정보처리기사에서 주의할만한 함정 모음입니다.
\0 == 문자열의 끝 (Null 문자)
C 언어의 문자열은 반드시 \0 (null) 로 끝납니다. 메모리 상에서도 \0 을 포함합니다.
sizeof 는 배열 전체의 크기를 구하기 때문에 \0까지 포함됩니다.

array == &array[0]
array++ == 불가
p++ 가능
배열의 이름은 고정된 주소이므로 이동할 수 없고, 포인터 변수는 주소를 저장하는 변수이므로 이동할수 있습니다.
아래 이미지 처럼 array++ 을 사용하게 될 경우 오류가 뜨게 됩니다.

strcmp(“ABC”, “ABC”) == 0
strcmp 는 두 문자열이 같은지뿐만 아니라 어느 문자열이 더 앞에 있는지 비교하는 함수 입니다.
두 문자열이 같을 경우 0, 첫번째 문자열이 더 작을 경우 음수, 첫번째 문자열이 더 크면 양수를 반환합니다.
문자열이 큰지 작은지를 나타내는 것은 아스키 코드로 판단합니다. 시험에서 아스키 코드를 활용한 문제가 자주 출제되므로, 대략적인 범위를 알아두시는 것을 추천드립니다~

[아스키코드 범위]
대문자 : A(65) ~ Z(90)
소문자 : a(97) ~ z(122)
숫자문자 : 0(48) ~ 9(57)
예시 이미지의 경우 1편과 마찬가지로 MyCompiler C 컴파일러를 이용하여 작성하였습니다~
모두 좋은 결과 있으시길 바라며, 이 글이 조금이라도 도움이 되었으면 하는 바램입니다~
제 글을 읽어주셔서 감사합니다. 모든 분들 화이팅!! 좋은 하루 되세요~!





