C语言中一些容易忽视的细节

1.C语言基本知识

编译器:将高级语言程序解释成计算机所需的详细的机器语言指令集的程序。(编译器是一个转换的程序)。
Visual Studio等:是一个集成开发环境(Integrated Development Environment, IDE),包含了编译器和一些其他的工具.
代码流程
源代码(.c) ==> 编译器 ==> 目标代码(.obj) ==> 链接器(加入了库代码与启动代码) ==>可执行代码(.exe).
其中.obj和.exe都是机器码,只是exe比obj加入了库代码与启动代码。

C语言中标识符由字母、数字和下划线组成,区分大小写,不能以数字开头。
良好的程序风格和文档,可以使程序更容易的阅读与维护。

基本数据类型: 整型、浮点型、指针和复合类型。 每类又分成有符号与无符号两种
长整型至少与整型一样长,而整型至少与短整型一样长。但长整型并不一定必须长于短整型。

2.常见误区

typedef可以为各种数据类型定义新名字,防止声明变得过长。
例如: typedef int my_int

const int a = int const a ,用于不改变变量值的情况下。
define MAX 20, define的结果可以用到任何地方(无类型),而const的结果只是一个变量(有类型)。二者定义的值都不允许改变

3.作用域问题

变量/标识符的作用域:代码块作用域,文件作用域,原型作用域,函数作用域。
代码块:一对花括号之间的所有语句。 避免在嵌套的代码块中出现相同的变量名,否则,内部代码块中的变量会屏蔽外部代码块中的变量。
文件作用域:在所有代码块之外(最外层括号外)声明的标识符都具有文件作用域,从标识符声明之处到源文件结尾处都是可以访问的。

4.标识符的链接属性:

处理在不同文件中出现的标识符。作用域与链接属性也有关。
链接属性:
external:同一标识符在多个源文件,多个声明均指向同一实体; 用extern表示
internal:同一标识符在同一源文件中的声明指向同一实体,不同源文件,指向不同实体;
用static表示 ,也表示静态变量
none: 同一标识符所有的声明标识符均指向不同实体

5.循环相关

do while语句至少执行一次循环
break:跳出循环,进行下一阶段的程序;嵌套循环时只跳出最内层循环。

continue:结束当次循环的剩余语句,进行下一次判断/循环;循环嵌套时之影响最内层的循环。

switch语句最后加上default子句,可以避免出现问题。
没有循环语句的循环体,采用表示空语句。

左移补零即可,右移分逻辑移位(补零)和算术移位(按数的正负号补0/1)。
malloc:字节数;
calloc:元素个数,元素字节数。

6.指针相关

int *a 可以理解为:*a后的值是int型,或者a是int *类型变量
NULL指针,给指针变量赋0值即可。
*操作符具有从右向左的结合性,**a相当于*(*a)
声明一个指针变量并不会分配内存,因此需要进行初始化

指针操作:
<1>.指针+-整数。
<2>.指针-指针:结果是类型的差。
<3>.比较相等或不等,也可执行<,<=,>,>=这些操作。
上述指针必须指向同一个数组
左值一般是变量,右值一般是常量/表达式;左值可以放在左右,右值只能放在右边。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值