C - Misc Operators: A Friendly Guide for Beginners
안녕하세요, 미래의 프로그래머 여러분! 오늘 우리는 C 언어의 다양한 부수 연산자들에 대한 흥미로운 여정을 시작할 것입니다. 프로그래밍에 처음이라면 걱정하지 마세요 - 저는 여러분의 친절한 안내자가 되어, 모든 것을 단계별로 설명해 드리겠습니다. 그럼 시작해 볼까요!
The sizeof Operator in C
여러분이 여행을 준비할 때, 각 아이템이 차지하는 공간을 알고 싶은 기분을 상상해 보세요. C 언어의 sizeof
연산자는 바로 그런 일을 합니다 - 프로그램에서의 대상의 크기를 알려줍니다!
sizeof
연산자는 그 연산자의 피 연산자의 크기를 (바이트 단위로) 반환합니다. 다음은 그 사용법입니다:
#include <stdio.h>
int main() {
int number = 42;
char letter = 'A';
printf("Size of int: %zu bytes\n", sizeof(int));
printf("Size of char: %zu bytes\n", sizeof(char));
printf("Size of number variable: %zu bytes\n", sizeof(number));
printf("Size of letter variable: %zu bytes\n", sizeof(letter));
return 0;
}
이 코드를 실행하면 다음과 같은 것을 볼 수 있습니다:
Size of int: 4 bytes
Size of char: 1 byte
Size of number variable: 4 bytes
Size of letter variable: 1 byte
과 같이, sizeof
는 데이터 타입과 변수 모두에 사용할 수 있습니다. 데이터가 얼마나 많은 메모리를 사용하는지 정확히 알고 싶을 때 매우 유용합니다!
Address-of Operator in C
이제 주소 연산자에 대해 이야기해 보겠습니다. 주소 연산자는 앰퍼샌드(&)로 표시됩니다. 컴퓨터의 메모리를 큰 아파트 빌딩으로 생각해 보세요. 각 아파트(메모리 위치)는 고유한 주소를 가지고 있습니다. & 연산자는 이러한 주소를 찾는 데 도움을 줍니다!
다음은 간단한 예제입니다:
#include <stdio.h>
int main() {
int age = 25;
printf("Value of age: %d\n", age);
printf("Address of age: %p\n", (void*)&age);
return 0;
}
이 outputs는 다음과 같은 것을 출력합니다:
Value of age: 25
Address of age: 0x7ffd5e7e9994
정확한 주소는 컴퓨터마다 다르지만, 개념은 이해하실 수 있을 것입니다!
The Dereference Operator in C
주소 연산자(&)가 무엇이 어디에 있는지 찾는 것에 관한 것이면, 참조 연산자(*)는 그 주소를 방문하고 거기에 있는 것을 확인하는 것입니다. "저 주소가 있으니, 그 안에 무엇이 있는가?"라고 말하는 것과 같습니다.
다음은 그것을 행동으로 보이는 예제입니다:
#include <stdio.h>
int main() {
int cookies = 5;
int *p_cookies = &cookies;
printf("Value of cookies: %d\n", cookies);
printf("Address of cookies: %p\n", (void*)&cookies);
printf("Value of p_cookies: %p\n", (void*)p_cookies);
printf("Value at *p_cookies: %d\n", *p_cookies);
return 0;
}
Output:
Value of cookies: 5
Address of cookies: 0x7ffd5e7e9994
Value of p_cookies: 0x7ffd5e7e9994
Value at *p_cookies: 5
*p_cookies
가 p_cookies
가 가리키는 주소에 저장된 값을 반환하는 것을 보셨나요? 그것이 참조 연산입니다!
The Ternary Operator in C
ternary 연산자는 축약된 if-else 문입니다. 조건에 따라 값을 할당하고 싶을 때 완벽합니다. 문법은 다음과 같습니다:
condition ? value_if_true : value_if_false
다음은 예제입니다:
#include <stdio.h>
int main() {
int age = 20;
char *status = (age >= 18) ? "adult" : "minor";
printf("At %d, you are an %s.\n", age, status);
return 0;
}
Output:
At 20, you are an adult.
이렇게 멋지지 않나요? 질문을 하고 두 가지 가능한 답 중 하나를 얻는 것과 같습니다!
The Dot (.) Operator in C
점 연산자는 구조체의 멤버에 접근할 때 사용됩니다. 구조체는 다양한 타입의 항목을 담을 수 있는 컨테이너로 생각할 수 있습니다.
다음은 예제입니다:
#include <stdio.h>
struct Person {
char name[50];
int age;
};
int main() {
struct Person john = {"John Doe", 30};
printf("Name: %s\n", john.name);
printf("Age: %d\n", john.age);
return 0;
}
Output:
Name: John Doe
Age: 30
우리는 점 연산자를 사용하여 Person
구조체의 name
과 age
에 접근합니다.
The Indirection Operator in C
참조 연산자는 앞서 설명한 참조 연산자(*)와 같습니다. "간접"이라는 이름은 포인터를 통해 간접적으로 값을 접근할 수 있기 때문입니다.
다음은 약간 더 복잡한 예제입니다:
#include <stdio.h>
int main() {
int x = 10;
int *p = &x;
int **pp = &p;
printf("Value of x: %d\n", x);
printf("Value of *p: %d\n", *p);
printf("Value of **pp: %d\n", **pp);
return 0;
}
Output:
Value of x: 10
Value of *p: 10
Value of **pp: 10
여기서 우리는 여러 단계의 간접 참조를 사용하고 있습니다. pp
는 포인터의 포인터입니다!
그럼 이제 C의 모든 부수 연산자를 다 봤습니다. 연습이 완벽을 만든다고 생각하니, 이 연산자들을 자신의 코드에서 실험해 보지 마세요. 행복하게 코딩하세요!
연산자 | 이름 | 예제 | 설명 |
---|---|---|---|
sizeof | 크기 | sizeof(int) | 타입이나 변수의 바이트 크기 반환 |
& | 주소 | &variable | 변수의 메모리 주소 반환 |
* | 참조 | *pointer | 포인터가 가리키는 값에 접근 |
? : | 삼항 | condition ? value1 : value2 | 조건부 할당 |
. | 점 | structure.member | 구조체의 멤버에 접근 |
* | 간접 | *pointer | 포인터를 통해 간접적으로 값에 접근 |
Credits: Image by storyset