부트캠프 한 달째가 돼서야 C언어의 꽃인 “포인터”를 익히다

바늘테·2025년 8월 27일
0

“나는 이 게임을 해봤어요!”

컴파일러에 대한 불평

솔직히 말해서, 나는 부트캠프가 두 번째다. 자바 풀스택 웹개발 과정.
자바는 그래도 바이트 코드 언어다보니 자바 JDK만 깔면 나머지는 큰 문제가 없었는데, C 언어를 하면서 나를 괴롭힌 건 코드 그 자체가 아니었다.

“컴파일러”라는 녀석이다.

솔직히 “녀석”이라는 표현도 아까울 정도로 욕이 나오는 요인이다. 참고로 강의실에서는 x64 윈도우 환경을 쓰고, 내 개인적으로는 맥북을 쓴다. 컴파일러를 강의실에 맞추면 맥북이 못 읽고, 맥북에 맞추면 강의실에서 못 쓴다.

오늘 컴퓨터를 만지면서 욕을 많이 했는데, 코드가 아니라 컴파일러 때문이었다. 바이브 코딩을 C 언어 코드가 아닌, .vscode 폴더의 JSON 파일에다 했으니 말 다 했지.

분명 직장에서 x86_64 환경을 쓰고 맥북으로 원격 작업하는 사람이 있을 텐데, 부족한 내 검색 실력을 탓해야지.

오늘 짠 코드

# include <stdio.h>
# include <string.h>
# include <ctype.h>
char c;
char str[20] = "";

char *separator(char ch) {
    if(ch >= '0' && ch <= '9') {
        strcpy(str, "숫자");
    } else if (ch >= 'a' && ch <= 'z') {
        strcpy(str, "소문자");
    } else if (ch >= 'A' && ch <= 'Z') {
        strcpy(str, "대문자");
    } else if (ispunct(ch)) {
        strcpy(str, "특수문자");
    }
    return str;
}

int main() {
    printf(">");
    scanf("%c", &c);
    separator(c);
    printf(">%c: %s\n", c, str);
    return 0;
}
  1. 내가 아무래도 각 자료형별 초기값에 약한 것 같다. 나중에 자주 쓰다보면 외워지겠지.
  2. C 언어는 Java와 달리, 문자열을 하나의 자료형으로 취급하지 않고, 문자의 배열로 취급한다. strcpy 같은 함수를 쓰려면 string.h라는 헤더를 포함하자. (이건 정보처리기사 공부 덕분에 대충은 알고 있었는데, 실제로 써 보는 건 처음이었다.)
  3. 원래는 정규식을 쓰려고 했지만, 인공지능 덕분에 ispunct() 함수와 ctype.h의 존재를 알게 되었다.
  4. 포인터에 쓰이는 부호, &*의 의미를 선생님께 여쭤봐야겠다.
    4.1. &은 포인터 변수의 주소값을 불러오는 역할을 하고, *은 결과값을 불러오는 역할을 하는 것 같은데, 여전히 헷갈린다.
  5. 선생님 조언으로는, 배열을 저장했다가 불러오는 거랑, 헤더를 많이 붙이면 최적화 쪽에서 감점이라고 하셨다.
profile
이 나이 처먹고도 여전히 방황 중

0개의 댓글