C 語言 - 雜項運算符:初學者的友好指南
你好,未來的程序员們!今天,我們將踏上一段令人興奮的旅程,探索 C 語言中的雜項運算符。如果你是編程新手,不必擔心——我會成為你的友好導遊,一步步為你解釋一切。那麼,讓我們開始吧!
C 語言中的 sizeof 運算符
想像一下你正在為旅行打包,並想知道每件物品佔了多少空間。C 語言中的 sizeof
運算符做的就是這件事——它告訴我們程序中各種事物的尺寸!
sizeof
運算符返回其操作數的大小(以字节計)。下面是如何使用它:
#include <stdio.h>
int main() {
int number = 42;
char letter = 'A';
printf("int 的尺寸:%zu 字节\n", sizeof(int));
printf("char 的尺寸:%zu 字节\n", sizeof(char));
printf("number 變量的尺寸:%zu 字节\n", sizeof(number));
printf("letter 變量的尺寸:%zu 字节\n", sizeof(letter));
return 0;
}
當你運行這段代碼時,你會看到類似於以下內容:
int 的尺寸:4 字节
char 的尺寸:1 字节
number 變量的尺寸:4 字节
letter 變量的尺寸:1 字节
正如你所見,sizeof
可以用於數據類型和變量。當你需要準確知道你的數據佔用了多少內存時,它非常有用!
C 語言中的地址運算符
現在,讓我們來討論地址運算符,用與鍵號 (&) 表示。把你的電腦內存想像成一個大公寓樓。每個公寓(內存位置)都有自己的地址。& 運算符幫助我們找到這些地址!
這裡有一個簡單的例子:
#include <stdio.h>
int main() {
int age = 25;
printf("age 的值:%d\n", age);
printf("age 的地址:%p\n", (void*)&age);
return 0;
}
這將輸出類似於以下內容:
age 的值:25
age 的地址:0x7ffd5e7e9994
實際地址將會在你的電腦上有所不同,但你明白了這個概念!
C 語言中的間接運算符
如果地址運算符 (&) 是關於找到某物的位置,那麼間接運算符 (*) 就是關於訪問那個地址並看看裡面有什麼。就像是說,“我有一個地址,裡面有什麼?”
讓我們看看它在行動:
#include <stdio.h>
int main() {
int cookies = 5;
int *p_cookies = &cookies;
printf("cookies 的值:%d\n", cookies);
printf("cookies 的地址:%p\n", (void*)&cookies);
printf("p_cookies 的值:%p\n", (void*)p_cookies);
printf("*p_cookies 的值:%d\n", *p_cookies);
return 0;
}
輸出:
cookies 的值:5
cookies 的地址:0x7ffd5e7e9994
p_cookies 的值:0x7ffd5e7e9994
*p_cookies 的值:5
看見了嗎?*p_cookies
給我們的是存儲在 p_cookies
指向的地址中的值。這就是間接運算!
C 語言中的三元運算符
三元運算符就像是簡寫的 if-else 語句。當你想要根據一個條件賦值時,它非常合適。這是語法:
條件 ? 真值 : 假值
讓我們看一個例子:
#include <stdio.h>
int main() {
int age = 20;
char *status = (age >= 18) ? "成人" : "未成年";
printf("在 %d 歲,你是一個 %s。\n", age, status);
return 0;
}
輸出:
在 20 歲,你是一個 成人。
這不是很棒嗎?就像提一個問題並得到兩個可能的答案!
C 語言中的點 (.) 運算符
點運算符用於訪問結構體的成員。把結構體想像成一個可以存放不同類型多個項目的容器。
這裡有一個例子:
#include <stdio.h>
struct Person {
char name[50];
int age;
};
int main() {
struct Person john = {"John Doe", 30};
printf("姓名:%s\n", john.name);
printf("年齡:%d\n", john.age);
return 0;
}
輸出:
姓名:John Doe
年齡:30
我們使用點運算符來訪問我們 Person
結構中的 name
和 age
。
C 語言中的間接運算符
間接運算符實際上是我們之前討論過的間接運算符 (*)。它被稱為“間接”是因為它允許我們通過指針間接地訪問一個值。
這有一個稍微複雜一點的例子:
#include <stdio.h>
int main() {
int x = 10;
int *p = &x;
int **pp = &p;
printf("x 的值:%d\n", x);
printf("*p 的值:%d\n", *p);
printf)**pp 的值:%d\n", **pp);
return 0;
}
輸出:
x 的值:10
*p 的值:10
**pp 的值:10
在這裡,我們使用了多級間接運算。pp
是一個指向指針的指針!
至於這裡!我們已經介紹了 C 語言中的所有雜項運算符。記住,熟練是通過練習達到的,所以不要害怕在你的代碼中嘗試這些運算符。開心地編程吧!
運算符 | 名稱 | 示例 | 描述 |
---|---|---|---|
sizeof | 大小 | sizeof(int) | 返回類型或變量的字節大小 |
& | 地址-of | &variable | 返回變量的內存地址 |
* | 間接 | *pointer | 访問存儲在指針地址中的值 |
? : | 三元 | condition ? value1 : value2 | 簡寫的 if-else 語句 |
. | 點 | structure.member | 訪問結構體的成員 |
* | 間接 | *pointer | 访問指針指向的值 |
Credits: Image by storyset