C语言(14)指针(ii)

 指针变量初始化 

    如果指针变量没有初始化,此时是随机值。 ---野指针 
    初始化可以让指针变量 有明确指向。 
    
    int a = 10;
    int *p = &a;
    
    int *p = NULL; //NULL 0号地址   --- 空指针 
    

 赋值:

    int * p;
    p = NULL;
    
    int a;
    int *p;
    p = &a;
    
    int *p,q; //p是指针类型 int * 
                 //q是int型
    int *p,*q; //此时表示定义了两个 int*类型的变量 p 和q 
    注意:  
               定义时候的 * 修饰变量名的 表示定义的是一个指针类型的变量 
               
 


为啥需要指针?

被调修改主调     //指针 80%  用途 

要实现被调修改主调:   
1. 指针作为函数参数 
   
   形参   -- 指针类型 变量 ,用来接收实参 (实参是要操作的内存空间的地址)
   实参   -- 要修改谁,就把谁的地址传过去 
             //要保证 空间有效 
             注意: 被调函数中 一定要有 *p 运算 //(间接访问的操作)
         
         
         
   值传递               //只是 实参数据 赋值了形参  
   地址(指针)传递  //传的是地址 --可以实现被调修改主调 

        

指针 + 一维整型数组 

int a[5];   //一维整型数组 


              //数组名 
              //    类型  --- 数据类型 int[5]
              //    值    --- 数组首元素的地址 --- 常量 
          
           //数组名是个常量,不能做自增自减运算 
          

   数组名 -- 数组首元素的地址  
   
   这个地址值的类型  
   
   a <=>  &a[0] 
          //a[0]的数据类型 -- int型 
          //&a[0]  地址的类型 -- int *
          
          
    int *p = a; //表示 p指向数组a 

   
    *p  <=> a[0] 
    
    
指针的运算: 
&
*  

p+1   //加n 表示 跳过了n个基类型 
p-1
p++
p--
指针比较 > >= < <= == !=

p - q     //表示差了多少元素(基类型)
          //必须是同一类型的指针  
          
p + q     //不行      
            
            
数组作为函数参数 
  形参 -- 数组形式  //本质上是一个指针类型变量
                   int *a                   
          数组长度 
                   int len
  实参 -- 数组名 
              数组名代表数组首地址 
          数组长度         

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值