📜  转指针到指针(双指针)(1)

📅  最后修改于: 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 语言中非常重要的一个概念,它可以帮助我们更好的使用指针,可以动态分配多维数组等。熟练掌握双指针的使用可以大大提高我们的程序设计效率。