1. 程式人生 > >C語言之二級指標

C語言之二級指標



#include<stdio.h>
int main()
{
 int a=10;            //宣告一個int型變數a
 int *p=&a;            //宣告一個(int *)型變數p p用來存a的地址
 int **q=&p;            //宣告一個(int **)型變數q q用來存p的指標
 printf("a = %d\n",a);         //列印a
 printf("a的地址&a = %p\n",&a);       //列印a的地址
 printf("p = %p\n",p);         //列印p的值
 printf("p的地址&p=%p\n",&p);       //列印p的地址
 printf("p的解引用*p=%d\n",*p);      //列印p的解引用
 printf("q = %p\n",q);         //列印q的值
 printf("q的地址&q=%p\n",&q);       //列印q的地址
 printf("q的解引用*q=%p\n",*q);       //列印q的解引用
 printf("q的雙重解引用**q=%d\n",**q);     //列印q的雙重解引用              
return 0;
}


不管是int,float,char還是結構體:都是建立一個空間,這個空間要有名字,其次空

間內可以分成幾塊,儲存的是哪些東西。(遞迴的思想理解指標)


int  a;

定義: 一個名為a的空間被創立,內部不分,是一個整體。存的是10這個資料(位元組)


如此操作應用應該有:

一、對自身空間名的操作(地址操作:&a=

 二、空間內部存的東西的操作(解引用:a=


int 型兩個操作


int *p;

p=a;          

定義:一個名為p的空間被創立,內部不分,是一個整體

。存的是a這個空間。 


如此操作應用應該有:

一、對自身空間名的操作(地址操作&p=).

二、空間內部存的東西的操作,而內部存的東西a有兩個操作:

1、對a這個空間名操作(地址:(p=&a

2、對a空間內部的操作(解引用:*p=a)

一級指標三個操作


int **q;

**q=a;       

 定義:  一個名為q的空間被創立,內部不分,是一個整體。存的是p這個空間。

如此操作應用應該有:

一、對自身空間名的操作(地址操作: &q=
二、空間內部存的東西的操作,而內部存的東西p有兩個操作 1、對p這個空間名操作(地址:( q=&p
)); 
2、對p空間內部的操作:  (1)、 對a這個空間名操作(地址:(*q= p=&a (2)、 對a空間內部的操作(解引用:**q=*p=a) 二級指標四個操作