)
第九章 指针第一节 指针基本概念详解1. 前提知识静态存储区,动态存储区,不同变量会保存在不同的存储区里有些变量的内存是在编译的时候分配的,有些变量的内存是在程序运行时分配的变量都是会占用一段内存空间的(int,float,double,char占用一定内存空间,使用sizeof(类型))#includeiostreamintmain(){printf(int size: %d\n,sizeof(int));printf(double size: %d\n,sizeof(double));printf(float size: %d\n,sizeof(float));printf(char size: %d\n,sizeof(char));return0;}2. 地址的概念传统意义上地址:我们可以用文字例如XX市XX区XX号来找到对应地址在计算机中:是使用数字来表述地址,计算机习惯用十六进制的形式来表示地址(0x开头)总结来说,计算机中地址就是数字,代表内存中的位置严格区分地址和地址中内容的区别,程序内部会维持一张表(变量名,变量地址的值,变量类型等)3. 直接访问和间接访问直接访问:按变量地址存取变量值间接访问:将变量的地址存在另一个内存单元中,在C语言中,我们一般定义int,char,float,double这些变量,我们一般用这些类型的变量来存值在C语言中,我们也可以定义一种特殊的变量,这种特殊的变量用来保存地址的假设我们定义了一个变量来存放变量的地址,虽然这种特殊变量是保存地址的,但也区分保存什么类型的地址// 把变量i的地址保存到了mypoint // 理解成mypoint指向了i,这里所谓的指向,就是通过地址体现的 // 虽然mypoint是用来存放整型地址的,但是mypoint这种特殊变量也是需要占内存的 // 这种特殊变量mypoint一般占四个字节 mypoint i; // 如果我们现在要存取i的值,使用一种间接访问手段 // a) 首先我们先找到存放i的地址的这个内存位置,也就是mypoint的保存的地址 *mypoint指针变量:如果一个变量专门用来存放另外一个变量的地址,则称这个变量为指针变量指针变量的值:就是指针变量存放的值,是个地址,也叫指针区别指针变量(存放地址的变量),地址(指针)