C语言之不可忽视的细节

上一篇:冯·诺依曼体系结构

1、每种类型的大小是多少?
在这里插入图片描述
2、当局部变量和全局变量同名时,局部变量优先使用
在这里插入图片描述
3、C类型:
在这里插入图片描述
4、大小端:
大端:低位数据存储在高地址
小端:低位数据存储在低地址
Eg: 十进制100的二进制为00(高位数据) 00 00 64(低位数据)
地址:【低地址】【 】【 】【高地址】

5、存储负数:补码
源码
反码:源码取反
补码:反码加一

6、常量:C语言中的常量分为以下几种:

  • 字面常量
  • Const修饰的常变量
  • #define定义的标识符常量
  • 枚举常量
#include 
//举例 
enum Sex 
{
 MALE, 
 FEMALE, 
 SECRET }; 
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
 {
	3.14;//字面常量
	1000;//字面常量 
    const float pai = 3.14f;   //const 修饰的常量 
    pai = 5.14;		//pai还是3.14不可修改 
	#define MAX 100            //#define的标识符常量
    return 0; 
} 

7、转义字符:
在这里插入图片描述
在屏幕上打印一个‘打印一个“怎么做?

#include<stdio.h>

int main()
{
	printf("%c\n", '\'');
	printf("%s\n", "\"");
	return 0;
}

在这里插入图片描述

8、关键字typedef:是类型定义,这里应该理解为类型重命名。
//将unsigned int 重命名为uint_32, 所以uint_32也是一个类型名

 typedef unsigned int uint_32;
 int main()
 {
    //观察num1和num2,这两个变量的类型是一样的
    unsigned int num1 = 0;
    uint_32 num2 = 0; 
    return 0; 
 }

9、建议for语句的循环控制变量采用“前闭后开区间”写法。

10、
在这里插入图片描述
该程序for循环一次也不执行,因为在for循环中,在判断语句中,给k赋值为0,即k为假(c语言中,0为假,非零为真),所以不进入循环。

11、 static修饰局部变量改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。

12、一个全局变量/函数被static修饰,使得这个全局变量/函数只能在本源文件内使用,不能在其他源文件内使用。

13、每个switch语句中只能出现一条default子句。但是它可以出现在语句列表的任何位置,而且语句流会像贯穿一个case标签一样贯穿default子句。在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break。

14、break在循环中的作用 :while中的break是用于永久终止循环的。

15、ASCII的本质是编号

16、为什么要有补码?
方便用加法实现减法运算。

17、负数怎么求补码?
除符号位外,按位取反,末位加一。
正数的补码是其本身。

18、数据类型:识别方式和长度.

19、函数的参数

  • 实际参数(实参): 真实传给函数的参数,叫实参。实参可以是:常量、变量、表达式、函数等。无论实参是何种类型的量,在进 行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。
  • 形式参数(形参): 形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元), 所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。

20、函数的调用
传值调用 函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。所以我们可以简 单的认为:形参实例化之后其实相当于实参的一份临时拷贝。

21、数组:
随着数组下标的增长,元素的地址,也在有规律的递增。 由此可以得出结论:数 组在内存中是连续存放的。二维数组在内存中也是连续存储的。

22、逗号表达式:
exp1, exp2, exp3, …expN
逗号表达式,就是用逗号隔开的多个表达式。 逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

23、指针:
指针就是变量,用来存放地址的变量。(存放在指针中的值都被当成地址处理)。指针的大小在32位平台是4个字节,在64位平台是8个字节。

24、结构体:
函数传参的时候,参数是需要压栈的。 如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销 比较大,所以会导致性能的下降。 所以,结构体传参的时候,要传结构体的地址。


下一篇:斐波那契数列(C语言编程)
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值