zoukankan      html  css  js  c++  java
  • 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修饰后,这个变量和数组是一直存在的,指针指向它(变量或数组)没有问题的。红色部分是这里拉的,你可以参考下
  • 相关阅读:
    手工创建数据库的全部脚本及说明(转)
    HNOI 2009 梦幻布丁 链表 启发式合并
    【除草】【hnoi】精简题解
    矩阵乘法
    忧桑啊。。。
    【水】【SCOI】 精简题解
    [数论][SDOI2012]Longge的问题
    【2013】省选
    【集训队互测】ayq 三道题
    【水】 【SDOI】 极精简题解
  • 原文地址:https://www.cnblogs.com/vendanner/p/4784389.html
Copyright © 2011-2022 走看看