#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这个空间。
如此操作应用应该有: