指针用于指向计算机内存中任意位置存储的值的地址。获取存储在该位置的值称为取消引用指针。指针提高了重复过程的性能,例如:
- 遍历字符串
- 查找表
- 控制表
- 树结构
指针详细信息
- 指针算术:指针中可以使用四种算术运算符:++、--、+、-
- 指针数组:您可以定义数组来保存多个指针。
- 指针到指针: C 允许您将指针放在指针上,等等。
- 在 C 中将指针传递给函数:通过引用或地址传递参数使得被调用函数可以在调用函数中更改传递的参数。
- C 中函数的返回指针: C 允许函数返回指向局部变量、静态变量和动态分配内存的指针。
代码演示
指针
#include <stdio.h>
int main( )
{
int a = 5;
int *b;
b = &a;
printf ("value of a = %d\n", a);
printf ("value of a = %d\n", *(&a));
printf ("value of a = %d\n", *b);
printf ("address of a = %u\n", &a);
printf ("address of a = %d\n", b);
printf ("address of b = %u\n", &b);
printf ("value of b = address of a = %u", b);
return 0;
}
输出
value of a = 5
value of a = 5
address of a = 3010494292
address of a = -1284473004
address of b = 3010494296
value of b = address of a = 3010494292
代码演示
双重指针
#include <stdio.h>
int main( )
{
int a = 5;
int *b;
int **c;
b = &a;
c = &b;
printf ("value of a = %d\n", a);
printf ("value of a = %d\n", *(&a));
printf ("value of a = %d\n", *b);
printf ("value of a = %d\n", **c);
printf ("value of b = address of a = %u\n", b);
printf ("value of c = address of b = %u\n", c);
printf ("address of a = %u\n", &a);
printf ("address of a = %u\n", b);
printf ("address of a = %u\n", *c);
printf ("address of b = %u\n", &b);
printf ("address of b = %u\n", c);
printf ("address of c = %u\n", &c);
return 0;
}
输出
value of a = 5
value of a = 5
value of a = 5
value of a = 5
value of b = address of a = 2831685116
value of c = address of b = 2831685120
address of a = 2831685116
address of a = 2831685116
address of a = 2831685116
address of b = 2831685120
address of b = 2831685120
address of c = 2831685128