首页 > 其他分享 >联合、变量、宏-C语言

联合、变量、宏-C语言

时间:2023-03-29 20:55:36浏览次数:33  
标签:变量 静态 C语言 本地 联合 全局变量 define

在C语言中,联合有以下特性:

  • 存储方面:所有的成员共享一个空间
  • 同一时间只有一个成员是有效的
  • union的大小是其最大的成员
  • 初始化:对第一个成员做初始化

静态本地变量:

  • 在本地变量定义时加上static修饰符就成为静态本地变量
  • 当函数离开的时候,静态本地变量会继续存在并保持其值
  • 静态本地变量的初始化只会在第一次进入这个函数时做,以后进入函数时会保持上次离开时的值
  • 静态本地变量实际上是特殊的全局变量
  • 它们位于相同的内存区域
  • 静态本地变量具有全局的生存期,函数内的局部作用域
  • static在这里的意思是局部作用域(本地可访问)

*返回指针的函数:

  • 返回本地变量的地址是危险的
  • 返回全局变量或静态变量的地址是安全的
  • 返回在函数内malloc的内存是安全的,但是容易造成问题
  • 最好的做法是返回传入的指针

变量注意:

  • 不要使用全局变量来在函数间传递参数和结果
  • 尽量避免使用全局变量
  • *使用全局变量和静态本地变量的函数是线程不安全的

编译预处理指令:

  • #开头的是编译预处理指令
  • 他们不是C语言成分,但是C离不开它
  • #define用来定义一个宏
  • #define PI 3.14159,#define <名字> <值>
  • 注意没有结尾的分号,因为不是C的语句
  • 名字必须是一个单词,值可以是各种东西
  • 在C语言的编译器开始编译之前,编译预处理程序(cpp)会把程序的名字换成值
  • 完全的文本替换

宏:

  • 如果一个宏的值中有其他的宏的名字,也是会被替换的
  • 如果一个宏的值超过一行,最后一行之前的行末需要加\
  • 宏的值后面出现的注释不会被当作宏的值的一部分
  • #define_DEBUG,没有值的宏
  • 这类宏是用于条件编译的,后面有其他的编译预处理指令来检查这个宏是否已经被定义过了
  • 预定义的宏:
  • _LINE_,_FILE_,_DATE_,_TIME_
  • 带参数的宏:
  • 举例:#define cube(x) ((x)*(x)*(x))
  • 宏可以带参数,其原则如下:
  • 一切都要括号
  • 整个值要括号
  • 参数出现的每个地方都要括号
  • 举例:#define RADTODEG(x) ((x)*57.29)
  • 宏可以带多个参数
  • #define MIN(a,b) ((a)>(b)?(b):(a))
  • 也可以组合(嵌套)使用其他宏

标签:变量,静态,C语言,本地,联合,全局变量,define
From: https://www.cnblogs.com/TiAmo-bai/p/17270294.html

相关文章

  • C语言的函数原型(执行顺序问题)
    以下面一段代码为参考:像这样把sum()写在上面是因为:C语言的编译器是从上往下执行代码的,当他看到sum(1,10);sum(1,100);时,要知道sum()是个什么东西,也就是sum()要几个参......
  • Google联合创始人Sergey Brin向维基百科捐款50万美元
    Google联合创始人Sergey Brin 和妻子向维基百科捐款50万美元。维基百科今年准备筹资2830万美元。一直以来,维基百科不接受广告,只接受募捐。50万美元来自Brin Wojcicki......
  • C语言中printf各种格式符所代表的含义
    %d输出十进制整型%ld输出长整型%c输出字符型数据%s输出字符串%f输出浮点型float数据%lf输出double数据%u输出无符号十进制数据%p输......
  • 学习C语言第二天
    关于昨天的流程控制,决定暂时跳过,偷懒一下,因为再学习java对这些流程控制语句较为熟悉,故明天或者后天再做一些习题进行补充,今天进行数组的学习。一.数组1.引入当......
  • 结构体-C语言
    结构和本地变量一样,在函数内部声明的结构类型只能在函数内部使用所以通常在函数外部声明的结构类型,这样就可以被多个函数所使用了以下类似代码参考:1#include<stdio.......
  • 02、openFoam环境变量及基本命令
    一、环境变量src=‘cd$FOAM_SRC’lib=‘cd$FOAM_LIBBIN’app=‘cd$FOAM_APP’sol=‘cd$FOAM_SOLVERS’util=‘cd$FOAM_UTILITIES’tut=‘cd$FOAM_......
  • idea重构小技巧3,去掉临时变量
    idea重构小技巧2,去掉临时变量临时变量作为参数传递,很难阅读,提升了代码的阅读难度StringgroupId=context.getProcessModel().getOriginalMqMsg().getAlarmRule().getR......
  • windows系统启动rocketMQ提示找不到java环境变量
    问题是启动Broker遇到错误提示一直启动失败解决方式修改bin目录下的runserver.cmd,runbroker.cmd如图:runserver.cmd修改前修改后runbroker.cmd修改前修改后......
  • 第二篇 TypeScript 【 typeScript 断言 + typeScript 类型守卫 + typeScript 联合
    typeScript断言1、有时候你会遇到这样的情况,你会比TypeScript更了解某个值的详细信息,通常这会发生在你清楚地知道一个实体具有比它现有类型更确切的类型2、通过类......
  • ubuntu查看和修改PATH环境变量
    总结:path变量其实存储在/etc/environment文件中,如果要重置PATH只需要source/etc/environment1、查看PATHecho$PATH2、修改PATH修改ubuntu中PATH的方法:直接修改$PAT......