C提高(1)

main函数可以在栈分配空间/可以再堆里分配空间,全全局区分配内存

铁律:指针是一种数据类型
在指针声明时,*号表示所声明的变量为指针
在指针使用时,*表示操作指针所指向的内存空间的值
*p相当于通过地址找到一块内存;然后操作内存
*p放在等号的左边赋值(给内存赋值)

    int a = 10;
    int *p3 = NULL;
    P3 = &a;
    *p3 = 20;//间接修改a的值
    //*就像一把钥匙,通过一个地址(&a)去修改a变量的表示的内存空间

*p放在等号的右边取值(从内存获取值)

{
        int c = 0;
        c = *p3;//c = 20
        //*p放在=号左边,写内存
        //*p放在= 号的右边 读内存
        printf("c:%d\n", c);
    }

指针变量和它指向的内存块是两个不同的概念
给p赋值 p= ox1111;只会改变指针变量的值,不会改变所指向的内容
给*p赋值 *p = ‘a’,不会改变指针变量的值,只会改变所指向内存块的值
注意:不断的给指针变量赋值,就是不断的改变指针变量(和所指的内存空间);建立指针指向谁,就把谁的地址赋值给指针
指针也是一种数据类型,是指它指向的内存空间的数据类型没有任何关系
含义:指针步长(p++),根据所指内存空间的数据类型来确定
强化野指针
/*野指针产生的原因
指针变量和它所指向的内存空间变量是两个不同的概念
释放了指针所指向的内存空间,但是指针变量本身没有重置成NULL
造成通过释放时通过if(p1 != NULL)
避免的方法:1)定义指针时初始化为NULL 2)释放指针所指向的内存空间后,把指针设置成NULL*/
注意:向NULL地址copy数据,会出现错误,因为,0开始的地址是操作系统保护的空间

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值