C语言之二级指针

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40667484/article/details/80874789



#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)
二级指针四个操作

猜你喜欢

转载自blog.csdn.net/qq_40667484/article/details/80874789
今日推荐