1、二级指针
指向指针的指针
指针是变量,有自己的空间就有自己的地址。
1.1、二级指针的定义
指针类型 *指针名;
int a = 20;
int b = 30;
int *p = &a;
int **q = &p;
// 通过q改变p的指向
*q = &b;
printf("%p %d\n",p,*p);
1.2、二级指针应用场景
一般二级指针用于改变一级指针的指向。
场景:在函数内部 需要修改外部指针的指向,需要传入外部指针变量的地址,形参需要用耳机指针。
void test(int **q)
{
*q = malloc(100);
}
int main()
{
int *p = NULL;
test(&p); // 在test函数内部改变p指针的指向
printf("%p",p);
return 0;
}
2、NULL和void *
NULL --- 宏名 地址编号为0
一般指针定义暂时不知道指向,或者指向指针指向被销毁的时候,要将指针指向 NULL.
void * --- 无类型的指针 ,这种类型的指针可以接收一个地址编号,一般需要强转
3、const和指针
const int *p; // *p是只读
int const *p; // *p是只读
int *const p = &a; // p是只读
const int *const p = &a; // p 和 *p都是只读的
1171

被折叠的 条评论
为什么被折叠?



