初识C语言--第七天

--指针

        -指针变量

         指针变量:专门保存地址的变量

        如何查看变量的类型:将变量名取掉,剩下的就是类型

        地址:每一块内存单元(1byte)的编号(取地址:取地址符&变量名;打印地址:%p

        (在64位操作系统下所有的指针类型的变量在内存中都是占用8个字节;

           在32位操作系统下所有的指针类型的变量在内存中都是占用4个字节

        -解引用操作符

        解引用操作符(*):可以获取地址中存放的值

        *&scores<==>*(scores地址)<==>scores的值(*和&可以相互抵消

        -数组和指针

          &arr(数组变量的首地址

          arr(数组名是数组中首元素的地址

          (特例:sizeof(arr),&arr数组名表示的整个数组

          示例代码:

输出结果:

-大端和小端

        大端(存储)模式:是指数据的低位保存在内存的高地址中,而数据的高位,保存中内存的低地址

        小端(存储)模式:是指数据的低位保存在内存的低地址中,而数据的高位,保存中内存的高地址

-野指针

        野指针就是指针中保存的是无效的内存地址随机的,不正确的,没有限制的)。

        成因:

        1.指针未初始化

        2.指针越界访问

        3.指针指向的空间释放

        如何规避野指针:

        1.指针初始化(int* p=NULL;)

        2.小心指针越界

        3.指针指向空间释放,及时置空

        4.指针使用之前检查有效性

-特殊指针

        void*指针

        void * 是一种特殊的指针类型,可用于存放任意对象的地址

        例如:int a=10;

                  void* p=&a

        缺点: 由于不知道地址中存放的是何种类型的数据,因此不能直接操作void*指针所指的对象 (如果要使用,需要进行强制类型转换

        NULL指针

        例如:int* p=NULL;

        含义: 定义指针的时候,一般会把指针的值初始化为0地址,仅仅用于初始化。0地址用户没有执行权限。直接对0地址操作,系统会提示段错误。

        例如:int* p=NULL;

                 *p=800;

正确示例代码:

输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值