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的空間被創立,內部不分,是一個整體
如此操作應用應該有:
一、對自身空間名的操作(地址操作&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) 二級指標四個操作