【数据结构与算法中的指针】指针用于指向存储在计算机内存中任何位置的值的地址。要获取存储在该位置的值, 称为取消引用指针。指针可提高重复过程的性能, 例如:
- 遍历字符串
- 查找表
- 控制表
- 树状结构
文章图片
指针详细信息
- 指针算术:指针中可以使用四种算术运算符:++, -, +, –
- 指针数组:你可以定义数组以容纳多个指针。
- 指向指针的指针: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