经常容易混淆的指针2020-11-24
第一组
int *a[10];
这是指针数组 代表数组里的每个元素是指针 常用来保存多个字符串
int (*a)[10];
这是数组指针 占4个字节 常用于二维数组 作为参数传递
int **p;
二级指针 保存一级指针的地址
用法1
int *a;
int **p;
p=&a;
用法2
int **p;
int *q[10];
将一个指针数组 *q[10],作为一个参数传递的时候,常定义为**p的形式
例子:
void fab(**p)
{
int i=0;
for(i=0;i<5;i++)
{
printf("%d",p[i]); //*(p+i)
}
}
int main(void)
{
int (* a)[4]={1,2,3,4};
fab(a);
}
第二组
int *fab(void);
这是指针函数 本质是一个函数 它的返回值是一个指针而已
int (* fan)(void);
这是函数指针 含义:保存一个函数的首地址 我们可以用函数指针变量来代替它使用
把一个函数作为参数 传递给另一个函数的时候 采用 只用函数名就可以替代
指针只能保存开辟好空间的地址 不能随意保存地址