在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;
}
- 联合体(union):
联合体是一种特殊的数据结构,它允许在相同的内存位置存储不同的数据类型。联合体的所有成员共享同一块内存空间,因此它们的大小等于其最大成员的大小。以下是一个简单的例子:
#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
的联合体,它包含一个整数、一个浮点数和一个字符数组。我们可以通过不同的成员访问这个联合体的值。
总结:
- 指针操作指针涉及到使用一个指针来指向另一个指针,从而实现多级指针,访问更复杂的数据结构。
- 联合体是一种特殊的数据结构,允许在相同的内存位置存储不同的数据类型。联合体的所有成员共享同一块内存空间,因此它们的大小等于其最大成员的大小。