在C語言中,指針操作指針和聯合體(union)是兩個不同的概念,但它們都可以用來處理復雜的數據結構
指針操作指針是指使用一個指針來指向另一個指針,這樣可以實現多級指針,從而訪問更復雜的數據結構。以下是一個簡單的例子:
#include <stdio.h>
int main() {
int a = 10;
int *p = &a; // p 是一個指向整數的指針
int **pp = &p; // pp 是一個指向指針的指針
printf("a = %d\n", a);
printf("p = %p\n", p);
printf("pp = %p\n", pp);
*pp = &a; // 通過指針的指針修改 p 的值
printf("p = %p\n", p);
return 0;
}
聯合體是一種特殊的數據結構,它允許在相同的內存位置存儲不同的數據類型。聯合體的所有成員共享同一塊內存空間,因此它們的大小等于其最大成員的大小。以下是一個簡單的例子:
#include <stdio.h>
typedef union {
int i;
float f;
char str[20];
} Data;
int main() {
Data data;
data.i = 10;
printf("data.i = %d\n", data.i);
data.f = 220.5;
printf("data.f = %f\n", data.f);
strcpy(data.str, "C Programming");
printf("data.str = %s\n", data.str);
return 0;
}
在這個例子中,我們定義了一個名為Data
的聯合體,它包含一個整數、一個浮點數和一個字符數組。我們可以通過不同的成員訪問這個聯合體的值。
總結: