📅  最后修改于: 2023-12-03 15:41:51.511000             🧑  作者: Mango
在 C 语言中,指针是一种非常重要的数据类型,它能够为我们带来很大的便利性。在指针的使用过程中,常常需要将指针转换为另一种指针类型,或者将指针指向其它指针的地址。
这时候就需要使用到指针到指针(双指针)了。
指针到指针(双指针)指的是一个指向指针的指针。它是一个指针变量,存储的是另一个指针变量的地址。
双指针的声明形式如下:
int **pp; //pp是一个指向指针的指针,即双指针
双指针主要用于动态内存分配。我们可以使用双指针来动态的申请一个二维数组的内存,或者动态给一个指针数组分配内存等。
以下是使用双指针动态分配二维数组内存的示例代码:
#include <stdio.h>
#include<stdlib.h>
int main()
{
int i,j,n,**arr;
printf("Enter size of array: ");
scanf("%d",&n);
arr=(int**)malloc(n*sizeof(int*)); //动态分配指针数组内存
for(i=0;i<n;i++)
arr[i]=(int*)malloc(n*sizeof(int)); //动态分配每个指针所指向的内存空间
printf("\nEnter array elements:\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",*(arr+i)+j);
printf("\nArray elements are:\n");
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<n;j++)
printf("%d\t",*(arr[i]+j));
}
return 0;
}
在上述示例中,先使用双指针动态分配了一个指针数组 arr ,并且对于每一个指针所指向的内存空间也进行了动态分配。然后使用循环语句对每个指针所指向的内存空间进行了输入输出。
指针到指针(双指针)是 C 语言中非常重要的一个概念,它可以帮助我们更好的使用指针,可以动态分配多维数组等。熟练掌握双指针的使用可以大大提高我们的程序设计效率。