今天写的一个例子:
运行结果:
运行环境,64位 ubuntu
二重指针的C语言表示:int **p,它表示指针的指针,二重指针其实就是指针数组指针。
二重指针一般用的场合:
(1)二重指针指向一重指针的地址。
(2)二重指针指向指针数组的地址。
(3)实践中二重指针用得比较少,大多数都是和指针数组一起用的。
(4)实际编程时有时在函数传参时,为了通过函数内部改变外部的指针变量,通常用二重指针。
举例:
/***********************************二重指针基本用法*********************************************/
#include<stdio.h>
int main()
{
int a = 10;
int *P1;
int **P2;
P1 = &a;
P2 = &P1;
return 0;
}
/**********************************二重指针指向指针数组*****************************************/
#include<stdio.h>
int main()
{
int *a[4];
int **p;
p = a;//注意这里为什么可以这么赋值?因为a是数组首元素的地址,并且a的首元素为int *类型,所以a便是int *类型的地址,因此可以这么赋值
}
/*********************************二重指针改变指针地址***************************************/
#include<stdio.h>
void func(int **p)
{
*p = (int *)0x12345678;
}
int main()
{
int a =10;
int *P = &a;
do somethings();
func(&p)
return 0;
}
/***********************二重指针动态内存分配 *****************************************/
参考:https://blog.csdn.net/Cheatscat/article/details/80307618