111期_C++_2024年1月寒假作业博客_day08

1 const 和 #define定义常量的区别

        1.1 define宏是编译预处理阶段展开,const常量是编译运行阶段使用

        1.2 宏没有类型,不做任何类型的检查,仅仅是类型展开,const常量后要跟具体的类型,

              在编译阶段会执行类型检查

        1.3 define宏在多少地方使用,就展开多少次,不会分配内存,const常量会在内存中分配具体

              的空间,这个空间可以是在堆中,也可以是在栈中

        1.4 const定义的常量在内存中只会分配一次

2 宏定义了一段代码

        2.1 在定义了宏以后,在进行宏替换时,应注意括号问题,以及运算符优先级的问题

3 预编译和编译

        3.1 C语言由源代码生成的各阶段的步骤如下:

              源代码 -> 编译预处理 -> 编译 -> 优化程序 -> 汇编程序 -> 连接程序 -> 可执行文件

        3.2 预编译指令包括:#include, #define, #if, #else, #endif

        3.3 编译预处理要进行的环节:宏替换,去注释,头文件展开,条件编译

        3.4 #define定义的宏,可以多次使用

4 编译预处理

        4.1 预处理命令行不能以分号结尾

        4.2 预处理命令行可以出现在程序的最后一行

        4.3 预处理命令行作用域是整个文件

5 多次定义宏

                定义了宏之后,可以多次更改宏的值,每次更改之后宏之后下面的代码中有对应内容的

         代码就会被替换,比如如下的代码,编译预处理阶段,会先把前两个a换成10,再把最后一

        个a换成40     

#define a 10
void foo();
void prin();

int main()
{
    prin();
    printf("%d ", a);
    foo();
    printf("%d ", a);
    
}
void foo()
{
#undef a
#define a 50
}
void prin()
{
    printf("%d ", a);
}

6 ()

7 数组依靠输入得到字符串

        7.1 数组要通过键盘输入获得一个含空格字符的字符串,不能通过scanf("%s",  字符数组名);

              这是因为如果依靠循环给字符数组赋值,将会在空格处进行截断

        7.2 可以使用如下代码给字符数组赋初值

	char str[1001] = { 0 };
	gets(str);

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值