C语言学习路线及笔记

目录

目录

学习路线:

C语言入门篇视频

第一课   程序设计与C语言

第二课  计算

第五课 循环控制

第六课 数组与函数

二维数组

 第七课 数组运算

1.数组的大小

 2.数组的赋值

第8课 指针与字符串

1.指针

 2.字符类型

3.字符串

C语言进阶篇视频

第1课 指针与字符串

1.指针应用场景

2.指针最常见错误

3.指针与数组

4.指针与const

 5.动态内存分配

6.字符串操作

 第2课结构类型

1.枚举

 2.结构

 3.联合

第3课 链表

第4课 程序结构

1.静态本地变量

2.变量的定义和声明 

第5课 文件

1.文件输入输出

 2.二进制文件

 3.位运算

C语言开源项目: 

学习路线:

参考编程指北公众号,如有侵权,联系删除

1.第一阶段,少看书,多看视频

  • 计算机导论 CS50
  • 中国MOOC网翁恺的视频,C语言入门和进阶,讲的非常细致,适合初学者程序设计入门——C语言_浙江大学_中国大学MOOC(慕课)
  • 学完语法,练手小例子,从最基本的链表插入、删除、单向、双向、环装链表到链表反转、合并、分割等,写点小东西,比如图书管理系统,俄罗斯方块,贪吃蛇之类(涉及函数,文件操作,动态内存,指针等关键内容)

2.搞懂内存,看书,写代码

  • 深入学习指针

《C和指针》、《深入理解C指针》,真的是涉及指针方方面面的好书,墙裂推荐。

  • 编译、链接

这俩兄弟懂了其实也不能帮你提高写代码的水平,主要是对于一些编译、链接过程的报错,更加的明确,不至于懵。

比如链接过程中常见的错误是符号未找到(undefined reference)和符号重定义(redefinition)

当你熟悉链接过程,符号查找过程之后,解决对应的报错也会得心应手。

  • 汇编

C 语言之下就是汇编,会汇编,你就能直接把 C 语言衣服扒掉,看看背后的实现,比如大家都在讨论数组和指针有什么区别?

你去写个程序,然后 gcc -S 一下,看下汇编代码,你就会发现没啥区别。。。

汇编不需要会写,会看懂部分记得,大可不必去刻意的记住各种指令、寻址方式。

推荐

C语言入门篇视频

第一课   程序设计与C语言

1.在线编程开发环境网站:C 语言开发环境 (icourse163.org) https://clin.icourse163.org

2.开发软件 Dev-C++,下载链接Download Dev-C++ from SourceForge.net

第二课  计算

++i和i++

#include <stdio.h>
int main()
{
	int a=14;
	int t1=a++;
	printf("t1:%d,a:%d\n",t1,a);
	int t2=++a;
	printf("t2:%d,a:%d\n",t2,a);
}

打印结果:t1:14,a:15

                  t2:16,a:16

第五课 循环控制

多重循环时,break只能跳出当前循环,如果跳出多重循环,使用goto

第六课 数组与函数

  •  每个函数有自己的变量空间,参数也位于这个独立的空间中,和其他函数没有关系
  • 按传值方式传递参数时,系统为对应的形参分配相应的内存单元,并将实参的值传递给形参后,实参与形参就断开了联系,即使在函数体内改变了形参的值,也不会影响到实参。数据传递方向是从实参到形参单向传递。

C语言不允许函数嵌套定义

二维数组

 第七课 数组运算

1.数组的大小

 2.数组的赋值

数组变量本身不能被赋值,要把一个数组的所有元素交给另一个数组,必须采用遍历

 注意:写程序最好单一出口,即return 只在结尾,多个return不好维护

第8课 指针与字符串

1.指针

  • &运算符取得变量的地址,他的操作数必须是变量
  • 地址的大小是否与int相同取决于编译器(32位或64位)

        printf("%lu\n",sizeof(int));              4/4

        printf("%lu\n",sizeof(&i))               8/4

  • 输出地址用%p   printf("%p\n",&i);
  • 指针变量就是记录地址的变量
  • *是一个单目运算符,可以访问指针的值所表示的地址上的变量
  • 数组变量是特殊的指针

void f(int *p)        不是定义了一个叫做*p的形参,而是定义了一个形参,类型是int *  

{

 2.字符类型

 制表符可用于字符串对齐,一个\t为4个字母

3.字符串

 

 

 

C语言进阶篇视频

第1课 指针与字符串

1.指针应用场景

  • 交换两个变量的值
  • 函数返回多个值,某些值就只能通过指针返回。传入的参数实际是需要保存带回的结果的变量
  • 函数返回运算的状态,结果通过指针返回。常用的套路是让函数返回特殊的不属于有效范围内的值来表示出错(返回0或-1)

2.指针最常见错误

  • 定义了指针变量,还没有指向任何变量,就开始使用指针

3.指针与数组

参数a[],实际是个指针,写明数组大小没用

数组变量本身表达地址

4.指针与const

 

 

 const在*前,表示所指不能修改,在后面表示指针不能被修改

 

 5.动态内存分配

6.字符串操作

 

 第2课结构类型

1.枚举

 2.结构

 3.联合

 

第3课 链表

第4课 程序结构

1.静态本地变量

 

 

本地变量地址会被收回 

2.变量的定义和声明 

 

 

 

 

 

第5课 文件

 *表示跳过

1.文件输入输出

 

 

 2.二进制文件

 

 

 

 

 3.位运算

 

 

 

 

 

 符号位不变

 

 

 可以对多个位进行位操作,而不是一个位

C语言开源项目: 

值得学习的C语言开源项目

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值