• 未初始化的指针


    1.我们定义了一个指针,一定要初始化,比如 int* a,没有初始化时,a的指向是不明确的。若它指向非法地址,这时的操作会报异常;若它指向一个合法地址,这是非常危险的,因为这样可能更改一个正在使用的数值。若在MCU中,指针指向非法地址,程序会跑飞。

    2.关于NULL指针,有时我们会写一个函数,这个函数返回一个值,但有时这个值可能会不存在,那么就需要返回一个代表这个值不存在的值。这样,就会造成一个值代表两种不同的意思,这是违背软件工程的原则的。这时,我们应该返回一个bool型的变量,代表这个值是不是有效的,然后将返回的值放在指针型参数中。

    3.有时我们知道地址的具体值,比如我们要往地址为100的地方存入一个数:*100=25,但这个表达式是非法的,因为100是整型,间接访问操作(*)只能作用于指针类型表达式,所以我们需要将100强制转换成指针:*(int*)100=25,在MCU中,我们经常可以看到

    #define ADC0_BASE         (0x40002000UL) /**< ADC0 base address  */
    #define ADC0         ((ADC_TypeDef *) ADC0_BASE)            /**< ADC0 base pointer */
    其中ADC0_BASE是一个unsigned long类型的常量,我们将这个常量转换成ADC_TypeDef类型的指针,那么,在以后的编程中,我们就可以使用ADC0这个指针了:ADC0->REG0,“->”是用于指针访问

  • 相关阅读:
    logging模块
    获得本机时间
    为了节约一台打印机,我也是无奈呀~~~~
    django通过管理页上传图片
    python打印爱心
    djago后台管理页面
    今天休年休找不到填年休的表了,结果就写了一个查找文件的缩引存起来方便下次用
    中间件调用顺序_______网站仿问过程
    django中间件
    py3.8安装
  • 原文地址:https://www.cnblogs.com/season-peng/p/6713522.html
Copyright © 2020-2023  润新知