指针是C语言的一种类型,是C语言的精髓。
使用指针的优点:
①可以直接操作内存,效率更高
②可以写复杂度更高的数据结构
③编写出简洁、紧凑、高效的程序
数据声明的对比:
int a 定义一个整型变量
int *a 定义一个指向整型数的指针,a指向个整型变量的地址,如:
#include<stdio.h>
void main()
{
int n=10;
int *a;
a=&n;
printf("a指向的地址:%d\n",a);
printf("n的地址:%d\n",&n);
printf("a的值:%d\n",*a);
}
上面结果输出为:
int **a / int *(*a) 定义一个指向指针的指针,如:
#include<stdio.h>
void main()
{
int n,*a,**aa;
n=10;
a=&n;
aa=&a;
printf("n=%d\n",**aa);
}
上面结果输出为:
int *a[10] 一个有10个指针的数组,该指针是指向一个整型数的。
int (*a)[10] 一个指向有10个整型数数组的指针。
int (*max_function)(int a) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数。
int (*a[10])(int) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数。
注意一个细节:下图说明编译器为*a和**a都分配了地址空间,所以有不同的地址出现。