《C语言程序设计》笔记

写在前面

学习路线:

  • c语言入门 程序设计-算法-运算符-顺序 分支 循环结构。
  • C语言精通 数组-函数字串符-指针-构造类型-预处理-存储管理-文件操作-数据结构。
  • c++入门 面对对象编程-类和对象-运算符重载-派生于继承,异常处理技术-C++语言 11标准-数据结构-(双向链表-双向队列-树-图)。
  • c++精通stl标准模板库(容器-迭代器-算法)正则表达式-boost标准模板库-socket网络编程-大型企业项目实战:-员工信息管理系统-推箱子-俄罗斯方块-服务器-播放器-人工智能。
  • windows高级工程师:win32/mfc-windows高级编程-QT框架编程-大型企业级项目实战项目(人脸识别-车牌识别-局域网远程监控-等项目)
  • linux系统应用程序开发-linux内核构架研究-linux顶级网络服务器开发及搭建。大型企业项目实战(linux内核高级虚拟内存驱动设计-linux网络间谍系统软件-linux内核网络数据劫持-linux网络阅读系统开发等等)
  • 上述学习8个月时间左右,如果一天高效率用6个小时学习,学完之后至少可以找到8000+以上的工作。

指针

10.3.4 指向多维数组的指针和指针变量

学会利用行指针列指针概念。
在二维数组中,行指针列指针的值虽然相等,但表达的意义不同。eg:arr。注意,这个好像只能用数组来操作,并不能用指针,因为赋值时不允许int *p = arr;

int *p[3]; // 指针数组,存放多个指针(地址)的数组
int (*p)[3]; // 定义指针变量p并指定它++的步长(3*4),赋值时要求数组的列宽必须也等于3。

多维数组的指针作函数参数:
两种方法:1、用指向变量的指针变量(列指针);2、用指向一位数组的指针变量(行指针)。

float score[3][4] = {{65,67,70,60},{80,87,90,81},{90,99,100,98}};
average(*score,12);// 求12个分数的平均分(传递列指针)
search(score,2);// 求第2个学生成绩(传递行指针)

优点: 通过指针变量存取数组元素速度快,且程序简明。用指针变量作形参,可以允许数组的行数不同。因此数组与指针常常是紧密联系的,使用熟练的话可以使程序质量提高,且编写程序方便灵活。

10.4.2 字符串指针作函数参数

例10.20 用函数调用实现字符串的复制

void copy_string(char from[], char to[])
{
  int i = 0;
  while(from[i] != '\0')
  {  to[i] = from[i]; i++;}
  to[i] = '\0';
}// 初级形态
while(*a++=*b++);// 终极形态

以上各种用法,变化多端,使用非常灵活,初看起来不太习惯,含义不直观,初学者会有些困难,也容易出错。但对C熟练之后,以上形式的使用是比较多的,读者应逐渐熟悉它,掌握它。

11.8.3 共用体类型数据的特点

与结构体相比特别的两点:

  1. 不能在定义时对它初始化;
  2. 共用体变量不能作为函数参数,函数也不能返回共用体变量,但可以使用指向共用体变量的指针(与结构体变量用法相仿);

12.3 位段

区分字节和存储单元:

  • 字节: 一个字节占8位,位段的存储可以细化到位。
  • 存储单元: 一个int类型如果是4个字节,那么就占32位。

所以就好理解:一个位段必须存储在同一存储单元中,空间不足会另起下一个存储单元。

例 13.2

文件复制:

  1. 打开输入、输出文件;
  2. 读取输入文件内容;
  3. 将内容写入到输出文件;

亮点: 将程序编译成功后在DOS界面运行,可以模拟linux复制文件。同时加深理解了编译程序和运行程序的概念。

如有侵权,请联系本人删除。

你可能感兴趣的:(笔记,-,C++)