C語言指針的高級操作
阿新 • • 發佈:2018-10-28
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
代表的便是指針ptr
的值
即var
的內存地址
,所以**pptr
便代表的是var
的值。
代碼運行結果如下:
ptr的值是0x7ffe3aee9994
*ptr的值是10
pptr的值是0x7ffe3aee9998
*pptr的指向的值是0x7ffe3aee9994
**pptr的指向的值是10
C語言指針的高級操作