C语言学习第九课(指针初级)

第九课

1,地址

内存单元的编号

注意://地址是不变的
     //地址是唯一的
     //地址是连续的
2,首地址

变量的第一个最大存储单元(地址其实就是一个整数)

3,指针
//指针:指针类型 大小始终为4个字节(在32位机器上)//大小始终为8个字节(在64位机器上)
//指针变量:是一个变量,用来保存地址
//例子:int a=3;int *p=&a;指针变量p保存了a的地址,也称指针p指向了a;
//指针指向的内存空间
比如:
    整数:int
    字符型:char
    小数:float
    地址:指针变量
4,指针定义

数据类型* 指针变量名

//定义指针类型的方法:写一个变量,再在变量名前面加*,表示这个变量是一个指针变量
//取地址:&变量名
//取值:*指针变量名
注意:指针的类型和所指向的类型,概念不同
//指针的类型,决定了取值时,以该类型的方式读取数据
//指针所指向的类型,与指针的类型无关
//指针:除了保存地址之外,还有额外的信息,如何取值
5,野指针

没有任何指向的指针,可能指向任何地方

6,空指针(NULL)
//指针指向了NULL ,NULL是0x00000000为系统保留地址,可用于初始化指针和条件判断
//空指针可以避免野指针产生,但也无法直接读取或输入
如:int* p=NULL;
7,void指针
//又叫万能指针,可以指向任意类型的变量
//使用时必须有确定的类型,可以通过强制类型转换来确定类型
//万能指针可以自动转换为任意类型的指针
例子:int a=0; void* p=&a;int* b=p;
8,二级指针

二级指针用来存储一级指针的地址

定义二级指针:数据类型**  指针变量名=&一级指针变量名
例子:
    int a=0;
    int* p=&a;
    int**pp=&p;
    //pp == &p
    //*pp ==&a == p
    //**pp == a ==*p
9,const与指针
//const在指针类型的前面,说明const修饰的指针所指向的内存空间不能通过指针去修改
例子1:【注意:const int* p 和 int const* p 两种写法效果相同】
   int n=0; 
   int m=3;
   const int* p=&n;
   n=1;//true
  *p=1;//error //不能通过指针改值
   p=&m;//true//可以修改指针的指向
//const写在普通变量前面,写在指针类型后面,说明const修饰的是普通变量,可以通过指针修改值,但无法修改指针的指向
例子2int n=0;
    int* const p=&n;
    *p=666;//可以修改
    int m=333;
    p=&m;//error//不能修改p的指向
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值