C语言【指针】#1

指针:


1.所谓的指针,其实就是地址,地址是内存单元的编号


理解:
指针(地址)--作为内存单元的编号,本身也是一种数据,但是这种数据含义比较特殊 (理解:相当于是酒店的门牌号)
2.指针还是一种数据类型
专门用来保存地址这种的数据类型

指针 --->内存单元的编号 ----->一块内存空间对应

指针变量的定义:


语法:


     基类型 * 指针变量名
      (1)(2) (3)
      
      (1)基类型 -- 表示 地址编号 所代表的那块空间 中要存放的数据的类型
      (2) *     -- 表示定义的变量,不是一般变量。而是指针类型的变量--意味着这个变量将来是存储 地址 这种数据的
      (3) 指针变量名 -- 标识符,命名规则与变量名命名规则一致

      
      int *p;//表示定义了一个指针类型的变量p
             //既然是变量,则p一定有自己的一块空间
             //这块空间是用来存放 地址的这种特殊的数据结构
             //p变量,可以存放的是int类型的地址
             //指针是一种数据类型,p是指向int型的指针类型
      
int a = 10;
int *p = &a;      
64位一般指的是地址总线和数据总线的宽度

通过指针访问数据:


单目运算
 作用: *地址值 => 访问到了地址值对应的那块空间
  
  //  类似于在酒店中开一个对应地址房间&a的钥匙 通过它可以进入房间 对里面的事物进行操作
  
  有了指针之后:
  可以通过a变量名进行直接访问
  可以通过p指针方式进行间接访问


  指针:实现被调函数对主调函数的修改(核心用途)


 注意:1要修改谁就把对应变量的地址传过去
            2一定要对其做*运算

 
 
 思考:&和*两个运算符优先级相同
 int *p = &a;
 &*p-- 先进行*p 就是变量a,再执行&运算,得到&a
 *&p-- 先进行&p 得到的是p变量的基地址 再对其进行指针运算 得到&a
 
 函数赋值注意:

 void swap(int * pl,int * p2) 
{int* temp; 
*temp=*pl;                    I* 此语句有问题*/
*pl=* p2; 
* p2= * temp; 


* pl 就是 a, 是整型变量。而* temp 是指针变量 temp 所指向的变量。但 temp 中并
无确定的值(它的值是不可预见的),因此 temp 所指向的单元也是不可预见的。
所以,对
* temp 赋值有可能给一个存储着重要数据的存储单元赋值,这样就会破坏系统的正常工
作状况。应该将* pl 的值赋给一个整型变量
 
 知识点纠正
 == 表示判断 优先级在<之后 在&之前 结合性从左到右
 


指针的运算


p+N  //指针+数字
        //含义:表示指向了第N个元素的位置
        //数值上看,sizeof(基类型)*N

指针访问一维数组 *(p+i) <=> a[i] //等价    数组下标访问 本质上就是指针运算

总结:


1.指针
2.指针变量定义 
  基类型 * 变量名;
3.指针变量的引用
  *指针变量名
  *p //理解三步运算过程 
4.指针的初始化 
  如果指针未初始化,此时指针变量中是个随机的地址 --- 野指针 
  为了让指针变量有明确的值,
  int a = 10;
  int *p = &a; 

  int *p = NULL; 
5.应用 
  被调修改主调 
  使用方法:
  a.要修改谁,把谁的地址传过去 
  b.被调函数中,一定要有 *运算
-----------------------------------
指针 + 数组 
指针 + 函数 
指针 + 指针 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值