• C关键字的解析


    以下对一些C关键字的特别用法进行剖析:
    关键字修饰的是最近的变量即就近原则

    extern和volatile: extern和volatile各自单一的用法就不多说了。当两个在一起使用时表示 接口(extern修饰)易变(volatile修饰)变量;用法:
    main.c文件中 volatile uint8 frequency_change_flag=0;
    main文件之外 extern volatile uint8 timer_count;
    注意这里的extern后也要用volatile声明

    volatile修饰数组: uint8 volatile dis_buffer[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    表示数组dis_buffer[]里的元素是易变的 下面拉段论坛里的文字助于理解:
    volatile int *a[x];这样好像是a指向的地方
    --- 这其实是说 *a[0], *a[1] 是易变的,而非“a指向的地方”
    a指向的地方和a[x]指向的地方都易变要怎么写?
    ------ 其实我听不懂“a指向的地方”是啥意思,a是数组名,本来就不可更改;要a[x]为volatile应当写成 int* volatile a[x];
    如果b里面的p是易变的呢?直接结构体里volatile int *p??
    ------ 同理 volatile int *p 指 *p 为 volatile,欲p 为 volatile当写成int*volatile p


    return: 函数可以返回数值的局部变量即传值,但不能返回指针和数组即传址。 函数不能通过返回指向栈内存的指针(注意这里指的是栈,返回指向堆内存的指针是可以的) 。那如果真的想返回局部变量的地址(即数组和指针)怎么办。那就把这个变量或数组static修饰吧,由于static修饰后,这个变量和数组是一直存在的,指针指向它(变量或数组)没有问题的。红色部分是这里拉的,你可以参考下
  • 相关阅读:
    css3 animate 和关键帧 @-webkit-keyframes
    CSS3 线性渐变(linear-gradient)
    css3 transition平滑过渡
    css3 变形设计涂鸦墙
    css3 图片翻转效果
    溢出隐藏
    顺序表的实现
    数论学习
    从BF算法到kmp算法详解
    王红梅、胡明、王涛编著的《数据结构c++》(第二版)模板类链表超详细代码
  • 原文地址:https://www.cnblogs.com/vendanner/p/4784389.html
Copyright © 2020-2023  润新知