C语言指针详解

/**
 * 指针简介
 * 可以有效地表示复杂的数据结构
 * 能动态分配内存
 * 方便地使用字符串
 * 有效而方便地使用数组
 * 在调用函数时能获得一个以上的结果
 * 能直接处理内存单元地址
 */
 
//地址与指针的概念?
/**
 为了说清楚什么是指针,必须弄清楚数据在内存中是如何存储的,又是如何读取的。
 声明一个变量,在编译时,系统会给变量分配内存单元(内存空间),内存区的每一个字节有一个编号,这就是"地址",
 地址所标志的内存单元中存放数据。
 
 变量的存储与读取流程
 定义整型变量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++
 */

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值