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对函数声明。

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

  1. C语言程序设计 细节总结(第10-11章 文件、预处理命令)

    第10章 文件 1.C语言系统把文件当成一个流,按字节进行处理 2.文件按编码方式分为二进制文件和ASCII文件(文本文件) 3.用文件指针标识文件,打开文件可取得该指针 4.对文件进行操作,打开-& ...

  2. C语言程序设计 细节总结(第9章 结构体共用体枚举)

    第9章 结构体.共用体.枚举 9.1 结构体 1.对于同类型结构体变量之间可以整体一次赋值 9.2 指向结构体的指针 9.2.1结构体变量的指针 1.定义格式:struct 结构体名 *结构体指针变量 ...

  3. C语言程序设计 细节总结(第8章 指针)

    第8章 指针 8.1 指针变量 1.指针变量定义及赋值:int a; int *p=&a; 或 int a; int *p; p=&a; 2.指针运算符:(1)取地址运算符& ...

  4. python语言程序设计梁勇-Python语言程序设计(美-梁勇)第1章习题解答

    Python语言程序设计(美-梁勇)第1章计算机.程序和Python概述习题解答 第一章 计算机.程序和python概述 1.1什么是硬件?什么是软件? 答:硬件包括计算机上能看到的物理元素,而软件提 ...

  5. c语言程序构造数据类型问题,C语言程序设计课程课件之第四章简单构造数据类型.ppt...

    C语言程序设计课程课件之第四章简单构造数据类型 第四章 简单构造数据类型 目录 4.1 一维数组 4.2 二维数组 4.3 字符数组 4.4 数组与指针 4.5 数组及指针作为函数参数 4.1 一维数 ...

  6. c语言函数的程序设计,C语言程序设计第3版,第6章函数程序设计.ppt

    C语言程序设计第3版,第6章函数程序设计 C语言程序设计 第6章 函数程序设计 第6章 数组程序设计 6.1 函数概述 6.2 自定义函数示例 6.3 函数定义及调用 6.4 函数嵌套和递归函数 6. ...

  7. java第二版课后题答案_Java语言程序设计第2版第16章 课后习题答案

    <Java语言程序设计第2版第16章 课后习题答案>由会员分享,可在线阅读,更多相关<Java语言程序设计第2版第16章 课后习题答案(62页珍藏版)>请在人人文库网上搜索. ...

  8. c语言程序设计课件第二章,c语言程序设计课件张元国 ISBN9787566300386 PPT第二章数据类型 运算符与表达式...

    1.第2章 数据类型.运算符与表达式,语言的数据类型 常量与变量 运算符与表达式 不同类型数据间的转换,2.1语言的数据类型,数据是计算机程序处理的所有信息的总称,数值.字符.文本等都是数据,在各种程 ...

  9. 共同体不是c语言中的一个数据类型,《c语言程序设计教学资料》第12章---构体和共同体.ppt...

    <c语言程序设计教学资料>第12章---构体和共同体 向函数传递结构体 用结构体指针或结构体数组作为函数参数,向函数传递结构体的地址 按值调用 按地址调用 结构体变量作函数参数 实现按值调 ...

最新文章

  1. Android之自定义瀑布流式的标签列表
  2. C++学习笔记-----输出数据的另一种写法(std::copy)
  3. spad 探测器_从光到光子—“单光子”探测器
  4. MyBatis使用小案例
  5. 小米 OV 联合起来才不是为了对抗 Google!
  6. Hadoop处理HDF文件
  7. 如何通过投掷一枚硬币产生各种概率
  8. 清除Windows远程桌面连接记录
  9. 2022年低压电工考试题模拟考试题库及模拟考试
  10. 单片机学习笔记(数码管)
  11. Unity3D 材质球设置参数无效果的解决方法
  12. CentOS7安装 SGE
  13. 基于微服务的个人博客系统
  14. Gentoo USE参数清单中文详解
  15. 电脑英寸,怎么看自己显示器尺寸_怎么查看电脑屏幕多少英寸
  16. unix cat命令
  17. 天干地支计算公式_如何快速的计算出每一天的天干地支
  18. 淘宝api是什么19970108019
  19. 微信小程序实时日志wx.getRealtimeLogManager——远程监控小程序日志
  20. [极客大挑战2021]web wp

热门文章

  1. lisp协议instand_分享|Linux 上 10 个最好的 Markdown 编辑器
  2. 2022-2028年中国XPS挤塑板行业市场全景评估及产业前景规划报告
  3. 用男女朋友关系解释计算机常用概念
  4. 【软件工程】RUP与软件开发5大模型
  5. SpringCloud Alibaba微服务实战(四) - Nacos Config 配置中心
  6. java 16进制与图片互转
  7. 汇编语言关于8086CPU多种寻址方式总结
  8. LeetCode简单题之石头与宝石
  9. 实时实例分割的Deep Snake:CVPR2020论文点评
  10. Libzip 版本过低或提示reinstall解决方法