/**
* 指针简介
* 可以有效地表示复杂的数据结构
* 能动态分配内存
* 方便地使用字符串
* 有效而方便地使用数组
* 在调用函数时能获得一个以上的结果
* 能直接处理内存单元地址
*/
//地址与指针的概念?
/**
为了说清楚什么是指针,必须弄清楚数据在内存中是如何存储的,又是如何读取的。
声明一个变量,在编译时,系统会给变量分配内存单元(内存空间),内存区的每一个字节有一个编号,这就是"地址",
地址所标志的内存单元中存放数据。
变量的存储与读取流程
定义整型变量i,编译时系统分配2000、2001两个字节给变量i。
在程序中一般是通过变量名来对内存单元进行存取操作的。
程序经过编译后已经将变量名转化成变量的地址,对变量值的存取都是通过地址进行的。
printf("%d", i)
根据变量名与地址的对应关系,找到变量i的地址2000,然后从2000开始的两个字节中取出数据,把它输出。
scanf("%d", &i)
把从键盘输入的值送到地址为2000开始的整型存储单元中。
这种通过变量地址直接存取变量的方式称为"直接访问"方式。
另外一种方式是间接访问,即将变量i的地址存放在另一个变量中,这种变量称为指向变量的指针变量。
int * i_pointer; //i_pointer是指向int型变量的指针变量
i_pointer = &i; //将i的地址2000存放到i_pointer中。
一个变量的地址称为该变量的指针,例如地址2000是变量i的指针。
存放变量地址的变量为指针变量,i_pointer为指针变量。
*指针运算符(或称"间接访问运算符"),取其指向的内容。
i_pointer为指针变量,* i_pointer为i_pointer指向的内容。
i = 3; 等价于 * i_pointer = 3
*/
/**
1. & * i_pointer的含义?
& * i_pointer 相当于 &i
2. * &i的含义?
* &i 相当于 i
3. (* i_pointer)++ 相当于 a++
*/
C语言指针详解
最新推荐文章于 2022-11-21 22:03:18 发布