b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

c 计算结构体大小 C语言学习入门(8)

电脑杂谈  发布时间:2017-12-25 13:05:49  来源:网络整理

与函数的区别

从整个使用过程可以发现,带参数的宏定义,在源程序中出现的形式与函数很像。但是两者是有本质区别的:

c 计算结构体大小_c  结构体大小函数_struct结构体大小计算

1>宏定义不涉及存储空间的分配、参数类型匹配、参数传递、返回值问题

2>函数调用在程序运行时执行,而宏替换只在编译预处理阶段进行。所以带参数的宏比函数具有更高的执行效率

预处理指令:条件编译

程序的其中一部分代码只有在满足一定条件时才进行编译,

否则不参与编译(只有参与编译的代码最终才能被执行),这就是条件编译

一般用法:

#if 条件1

…code1…

#elif 条件2

…code2…

#else

…code3…

#endif//条件编译结束标记

#if和#elif后面的条件一般是判断宏定义而不是判断变量,因为条件编译是在编译之前做的判断,

宏定义也是编译之前定义的,而变量是在运行时才产生的、才有使用的意义

#define MAX 11

int main ()

{

#if MAX == 0

printf(“MAX是0”);

#elif MAX > 0

printf(“MAX大于0”);

#else

printf(“MAX小于0”);

#endif

return 0;

}

是否定义过宏:

#ifdefined(MAX)//#ifdef的使用和#ifdefined()的用法基本一致

…code…

#elif!defined(MAX)//#ifndef又和#if!defined()的用法基本一致

#endif

预处理指令:文件包含

1.第1种形式#include<文件名>

直接到C语言库函数头文件所在的目录中寻找文件

2.第2种形式#include“文件名”

系统会先在源程序当前目录下寻找,若找不到,再到操作系统的path路径中查找,最后才到C语言库函数头文件所在目录中查找

注意:#include指令允许嵌套包含,比如a.h包含b.h,b.h包含c.h,但是不允许递归包含,比如a.h包含b.h,b.h包含a.h

使用#include指令可能导致多次包含同一个头文件,降低编译效率

解决方法:在包含的文件里,加上条件编译指令,防止函数被重复定义

如:

#ifndef c_program_cc_h//如果没有定义该宏,那就定义一个,然后预编译函数1,2; 如果定义了则不执行编译跳到了#endif

#define c_program_cc_h

method 1();

method 2();

………….

#endif

局部变量

1>定义:在函数内部定义的变量,称为局部变量。形式参数也属于局部变量。

2>作用域:局部变量只在定义它的函数内部有效,即局部变量只有在定义它的函数内部使用,其它函数不能使用它。

全局变量

1>定义:在所有函数外部定义的变量,称为全局变量。

2>作用域:全局变量的作用范围是从定义变量的位置开始到源程序结束,即全局变量可以被在其定义位置之后的其它函数所共享。

变量的存储类型

C语言根据变量的存储类型(变量存储的位置:1. 运行时堆栈 2.普通内存 3.寄存器)的不同,

可以把变量分为:自动变量、静态变量、寄存器变量

> 哪些是自动变量:被关键字auto修饰的局部变量都是自动变量,但是极少使用这个关键字,

基本上是废的,因为所有的局部变量在默认情况下都是自动变量。存在堆栈

> 哪些是静态变量:存在内存,程序结束才销毁

所有的全局变量都是静态变量

被关键字static修饰的局部变量也是静态变量

> 哪些变量是寄存器变量:

被关键字register修饰的自动变量都是寄存器变量


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-55787-8.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 张松龄
      张松龄

      最先进的濒海战斗舰不就驻扎在新加坡么~

    • 杨思语
      杨思语

      你脸红了吗

    热点图片
    拼命载入中...