第二、三章小结

本文详细解析了C语言的编译过程,包括预处理、编译、汇编和链接四个步骤,并深入探讨了C语言中的各种数据类型及它们的特点。此外,还介绍了变量的作用域与链接属性,以及不同的存储类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第二章主要是阐述了C语言的环境:编译和执行。

在编译中基本上编译器分为4部分动作:

1.由预处理器进行处理,执行一些文本操作,#define以及#include这些动作

2.编译,-s把代码翻译成汇编语言

3.汇编,把汇编语言翻译成二进制文件,也就是各个目标代码

4.链接,最后把目标代码捆绑在一起,同时引入标准库的函数程序。

第三章主要是通过数据来描述各个类型:

1.为了保持可移植性,把char限定在了有符号和无符号字符的交集之间。

2.不能修改字符串常量,因为其在内存里只有一份,如果更改会导致错误,比如"hello"变为"world",其实是改变了内存里面这个指针里的值,也就是说"hello"再打印时,打印出了world,因为打印的还是这个地址,地址里面的东西变了,所以编译器一般不允许更改。

3.不能把字符串常量赋值给一个字符数组,常量直接值时一个指针。

4.int* a,b,c;只有a是指向int的指针,其他都是int型。

5.常量const,简而言之const在*以及名字之前,这个值时不能改的,指针可以改,在*之后名字之前,指针的指向不能改变。

接着就是一个作用域与链接属性的问题,在不同作用域内,可以声明相同的变量名称,因为他们不会用相同的内存如

{
   int f,g,i;
}
{
    int i;
}
如果在外面声明了f,当进入小范围的作用域,再次声明定义,在这个范围内,会覆盖之前的值,退出作用域时还原。

如果在某个函数或者作用域内声明了如下的表示形式

int i,j;
{
    int a,b;
    {
        static c;  //或者extern
    }
}
c离开作用域的时候还会存在。

extern 只对第一次声明有用,static可以将extern变为内部的静态,如果一个全局变量或者一个函数缺省的状态下都是设定为extern

数据的存储类型:普通内存、运行时堆栈、硬件寄存器。

1、在任何代码块之外声明的变量总是存储于静态内存中。
2、代码块内部声明的缺省变量都是自动的,存储在堆栈中,如果声明为static可以变为静态。

3、register可以用于自动变量的声明,称为寄存器变量,存储在机器的硬件寄存器,如果声明太多,只取前几个,其他为普通变量处理。

静态变量隐式的初始化为0.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值