1. 程式人生 > >C語言指針的高級操作

C語言指針的高級操作

align Language cti c語言指針 ros ble ng- dde tle

C語言指針的高級操作

指針

指針

在上篇博客中我介紹了C語言指針的最基本操作,那麽我在這篇博客中會介紹一下C語言指針的一些騷操作。

指向指針的指針

這名字乍一聽有點拗口,再次一聽就更加拗口了。先看定義:

type **ptr;

指向指針的指針僅僅只比比指針只多了一個*號,沒什麽很大的改變,接下在我們看一下使用:

#include <stdio.h>
void main()
{
    int var = 10;
    int *ptr;
    int **pptr;
    
    ptr = &var;

    pptr = &ptr;

    printf
("ptr的值是%p\n",ptr); printf("*ptr的值是%d\n",*ptr); printf("pptr的值是%p\n",pptr); printf("*pptr的值是%p\n",*pptr); printf("**pptr的值是%d\n",**pptr); }

這時候我們想一想&*的作用就能理解了

  • &:取地址
  • *:從地址中取值

我們都知道,C語言指針是一個變量,只不過變量所儲存的值只能是地址罷了。那麽它肯定在內存空間肯定要占一個位置,因為不可能是憑空產生的嘛,那麽指針便有一個內存地址

所以,在上面的代碼中,pptr

即代表著指針變量ptr內存地址。而*pptr代表的便是指針ptrvar內存地址,所以**pptr便代表的是var的值。

代碼運行結果如下:

ptr的值是0x7ffe3aee9994
*ptr的值是10

pptr的值是0x7ffe3aee9998
*pptr的指向的值是0x7ffe3aee9994
**pptr的指向的值是10

C語言指針的高級操作