C语言程序设计 细节总结(第1-7章)

本文是对C语言程序设计的细节总结,涵盖了从C语言基础、数据类型、运算符到选择结构、循环结构、数组和函数等多个章节的重点内容。涉及到的要点包括运算符种类、数据存储、字符串处理、输入输出函数的使用、选择和循环结构的实现,以及函数调用的细节等。

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

C语言细节总结

温故而知新,许久没看C语言,发现了一些从前没注意的小细节,总结下来~

第1章C语言及C程序概述

1.C语言有34种运算符、32个关键字、9种控制语句

第2章数据类型、运算符与表达式

2.实型常量只采用十进制,表示方法:十进制小数形式、指数形式(aE±n)
3.实型常量不区分float和double型
4.转义字符 \ddd : 1~3位8进制数ddd所对应的字符;\xhh :1~2位16进制数hh所对应的字符
5.长度为n的字符串常量,在内存中占用n+1个字节
6.浮点数在计算机中以指数形式存储,小数部分越多,精确度越高;指数部分位数越多,表示范围越大。
7.单精度实数提供7位有效数字,双精度实数提供15~16位有效数字
8.编译器对逻辑表达式求解,只有在需要下一步计算才能确定表达式的值时,才进行下一步逻辑运算。
9.移位运算不改变原操作数的值,复合移位赋值运算改变。
10.按位右移运算>>,无符号数高位补0,有符号数正数补0,负数补1.
11.逗号表达式具有从左到右结合性,最后一个表达式的值是整个逗号表达式的值,逗号表达式优先级最低。
12.取模:余数的符号与被除数相同(-8%3=-2,15%-8=7)。
13. printf(“%d”,9.2/1.6*1.6==9.2); 结果为0,原因:9.2/1.6所得值有效位数有限。
14. i=8; printf(“%d %d”,j=i+2,- -i); //9,7
printf(“%d %d %d”,j=i+2,i,i- -); //9,7,8 原因:VC6.0中printf语句执行顺序为从右至左。
15. x=2; printf(“%d”,++x * ++x); //4*4=16
16.如果程序中不使用中间变量temp,可使用复合语句实现两数交换:{a=a+b;b=a-b;a=a-b;}

第3章算法、输入输出函数、顺序结构

17.常用的输入函数:scanf、getchar、gets ; 常用的输出函数:printf、putchar、puts。
18.scanf格式:scanf(“格式字符串”,输入项地址表);
(1)如果两格式说明符之间不指定数据分隔符,则输入时空格、Tab、Enter均可
如果指定或格式字符串内有任何普通字符,必须原样输入
(2)如果指定输入数据宽度,系统自动截取 如scanf(“%2d%2d”,&a,&b);//输入1234,则a=12,b=34;
(3)输入实型数据,不能规定小数点后位数
19.printf格式:
printf(“格式字符串”[,输出列表]);
格式说明符:%[标志][最小宽度][.精度][长度][格式字符]
(1)标志:
- : 结果左对齐,右面填空格
+ : 正数输出(+),负数输出(-)
# : 八进制和十六进制数显示前导0和0x
空格: 正数输出空格代替加号,负数输出减号
(2)最小宽度:指定超过实际宽度,补空格;指定不超过或不指定,按实际输出。
(3)精度:
实数:小数点后最多输出位数,不足补0,多出部分四舍五入
整数:最少输出位数,不足补0,多出按实际
字符串:最多输出位数,不足补空格,多出丢弃
(4)长度:h、l

20.将整数用字符形式输出时,系统先求该整数对256的余数,将余数作为ASCII码值,转换成相应字符后再输出。

第4章选择结构

21.条件运算符结合方向是从右向左
22.switch case语句:
(1)case语句后面只能是常量表达式;
(2)应在case分支后加break,否则会顺序执行后面的case;

第5章循环结构

第6章数组

23.C语言不允许动态定义数组,数组长度必须在定义时确定。
24.数组全部初始化为0可以这样写:int a[5]={0};
25.冒泡排序思想:比较相邻两个元素,n个数要进行n-1趟比较,第i趟比较中要进行n-i次两两比较。
26.选择排序思想:依次选择第i个元素分别与其后元素作比较,n个数要进行n-1趟比较,第i趟比较中要进行n-i次两两比较。
27.二维数组,如果对全部元素初始化,第一维长度可以不指定,但必须指定第二维长度。
28.字符数组初始化:
char a[]={‘C’,’h’,’i’,’n’,’a’};//数组长度为5,包含5个字符
char a[]=”China”;//数组长度为6,包含5个字符和字符串结束标志’\0’
29.字符串处理函数:
(1)gets(); gets函数只以回车为输入结束标志,而scanf函数回车和空格都为结束标志。
(2)puts();
(3)strlen();
(4)strcpy(字符串1,字符串2); 将字符串2拷贝至字符串1,包括结束符’\0’
字符数组中不能用赋值语句,如
char str1[10],str2[]=”China”;
str1=str2;//非法
str1=”China”;//非法
strcpy(str1,str2);//合法
(5)strcat();
(6)strcmp(); 两字符串不能直接比较,只能使用函数
(7)strlwr(); strupr();
30.M*N的二维字符数组可存放M个字符串,每个字符串最大长度为N-1(一个位置放’\0’)

第7章函数

31.实参传递给形参值得方式:值传递、地址传递(实参和形参必须是地址常量或变量,如数组名)
32.如果定义的函数值的返回类型和return表达式值不一致,以定义的函数返回类型为准
33.用户使用的内存区:程序存储区、静态存储区、动态存储区
34.变量存储类别:
(1)auto(自动型):可不加auto,函数和复合语句中使用,存储空间自动分配和释放
(2)static(静态型):静态局部变量-程序运行期间不释放;静态全局变量-只限于本文件中的函数引用
(3)register(寄存器型):使用频率较高的数据放在寄存器中,优化的编译系统完成,不需要编程者制定
(4)extern(外部型):全局变量作用域从变量定义处到程序结束,如果在全局变量定义位置之前引用,应该用extern声明;可以将在另一个文件中定义的全局变量作用域扩展到本文件。
35.外部函数extern,内部函数static,默认函数为外部函数,同时在需要调用该外部函数的文件中用extern对函数声明。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值