百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

你知道怎样学习C语言吗?

yuyutoo 2024-11-21 23:38 2 浏览 0 评论

如何学习C语言,在学习C语言的时候一定要掌握什么知识?在这里我给大家写出了一点点小计划,不喜勿喷,谢谢!

一、要学习的书

《C Primer Plus》、《C缺陷和陷阱》、《C和指针》、《C专家编程》。

二、知识点学习

1.字符串

1、 strlen()函数的返回值是什么类型的?

2、 字符串strlen() 的值,是否和他占据的内存空间相同?

3、 你是否知道strcpy 函数存在的潜在风险?如何避免?

4、 如果一个字符串没有字符串结束符,而调用str 开头的库克,会发生什么?

5、 Strcpy(),strcat(),strcmp(),strncpy(),strncat(),strncmp()内部到底是如何运行的?这些函数到底对源字符串和目标字符串做了些什么?你是否观察过它们运行时两个字符串内存的变化?

6、 上面这些函数使用时,各有哪些需要注意的地方?

7、 你会几种字符串查找操作?

8、 c语言中有字符串这个数据类型吗?

9、 对字符串进行操作的时候,是否为字符串结尾符预留存储位置?不然的话容易造成非常访问内存。

2.数组

1、 你肯定知道,定义“int a[10]; ”, a[10] 这个元素是无效的。

2、 你知道几种数组初始化的方法?

3、 数组和指针有千丝万缕的联系而又不同,你是否对他们在不同情况下的使用进行过详细的总结?

4、 “int calendar[10][20]; ”,这是一个什么样的数组?它拥有 10 数组类型的元素,还是 20 个?

5、 “int a[10]; ”,数组名 a 在本质上是一个什么?你是否打印过 a 的值?

6、 你知道几种获取数组某元素的方法?

7、 指针和数组相同吗?什么时候相同?什么时候不同?

8、 用指针和下标访问数组元素,那种方式更快?

3.结构体

1、 你知道什么是位域结构体吗?如何定义它?如何使用它?

2、 你知道字节对齐对结构体占用内存空间大小的影响吗?如何计算结构体占用内存的大小?

4.宏

1、 你知道宏的本质是什么吗?函数?语句?类型定义?或者其他?

2、 你知道语言设计者为什么设计宏大吗?这些原因目前是否仍然成立?

3、 你会设计带有参数的宏吗?

4、 你知道使用宏的参数的时候的注意事项吗?

5、 你会设计带有可变参数的宏吗?

6、 你知道使用宏有什么劣势吗?

7、 你有没有更好的替代方案?

5.枚举

1、 是否可以指定枚举中各项的值?

2、 如果不指定值,枚举的第一个值是多少?

3、 枚举的值是否可以是负数?

4、 定义枚举的时候,你是否专门定义了枚举的最小值和最大值?

6.switch

1、 switch(c)中的 c 的数据类型有哪些?

2、 你是否在所有的switch 中都加了 default 语句?

3、 是否在所有的case 中都加了 break 语句(一般情况的做法)?如果你不加 break ,将会发生什么?

7.static

1、 static的三个主要作用是什么?

2、 static的修饰的局部变量是保存在什么地方的?全局变量哪 ?

3、 static修饰的全局变量和函数,在其他的文件中是否可以访问?如何访问?

4、 你知道static 是 c 语言中是实现封装和隐藏的利器吗?你是否经常使用?

5、 定义在不同源文件中的static 全局变量,编译器是否允许他们的变量名称相同?他们在内存中的地址是否相同?函数那?

8.const

1、 你是否经常使用const 来表明不能够被更改的变量?

2、 你是否经常使用const 常量来代替宏?

3、 下面四种情况,你知道是各自表示什么意思吗?

int i_value= 10;

const int* pvalue = & i_value

int const *pvalue = & i_value

int* const pvalue=& i_value

const int* const pvalue =& i_value

4、 你知道const 常量如何初始化吗?

9.sizeof

1、 对于字符数组,strlen 和 sizeof 的值是否相同?

2、 S izeof本质上是函数还是宏?

3、 S izeof的返回值是什么类型?

10.指针

1、 “int *p; ” &p , p , *p 他们的值分别表示什么含义?

2、 你定义的指针初始化了没?

3、 你理解指针的指针的概念吗?你会使用吗?

4、 “int *pi_value; pi_value = 0x100000; ” pi_value + 1 的值是是多少?

5、 你会定义函数指针吗?

6、 你会使用函数指针调用函数吗?

7、 关于指针和数组,请参见知识点数组。

11.动态分配内存

1、 动态分配的内存是保存在什么地方的?

2、 什么情况下使用动态分配内存?

3、 动态申请内存一定要释放,否则会内存泄露。你是否使用过内存检测工具?

12.函数

1、 如何查看函数在内存中的地址?

2、 如何给一个函数指针赋值?

3、 你是否会定义可变入参函数

4、 你是否可以区分函数的形参与实参?

5、 如何定义函数名,以准确的表达函数的用途?

6、 你是否使用const 来修饰函数入参和返回值,以表的特定的含义?

7、 递归如何使用?

13.变量

1、 全局变量,局部变量,常量分别保存在内存中的什么地方?

2、 不同类型的变量,你是否知道其作用域?

3、 全局变量和局部变量是否可以重名?你是否在这样做?

4、 局部变量在函数退出后是否有效,为什么?

5、 全局变量为什么不允许定义在头文件中?有何危害?

14.连接(Linux)

1、 链接位于编译过程的那个阶段?

2、 动态链接库和静态链接库使用时有何区别?

3、 如何 对 动态链接库 进行 动态加载 (不用重启程序而加载链接库)?

4、 动态链接有何优点?

5、 动态链接库中是否定义了非static 的全局变量?你是否知道这是一个非常危险的动作?

6、 动态库中的全局变量(非static )和函数(非 static )是否可以和上层全局变量和函数重名?重名后会发生什么事情?

15.运行时的数据结构(Linux)

1、 你知道什么是段的概念吗?

2、 可执行程序可以分为几个段?每个段保存的是什么内容?

3、 如何查看可执行程序各个段的大小?

4、 当函数被调用时发生了什么?

5、 你有没有试过程序的栈空间最大有多大?程序超过此大小会发生什么?

6、 你使用的系统的栈是向下生长的,还是向上生长的?

16.Include

1、 如何避免对同一头文件的多次include ?

17.声明

1、 什么是 声明 ,什么是定义?

2、 你是否会运用c 语言声明的优先级规则?

18.关于 复杂度 :

1、 软件的首要技术使命 是 管理复杂度。

2、 优秀程序员的 一个特质 是将复杂的事情简单化,而非将简单的问题复杂化。所以,他们一般会选择简单的解决方案。

3、 极尽机巧,复杂的解决方案,除了将新手搞得晕头转向之外,别无他用。

4、 阅读优秀程序员的代码,是一种享受,你很少遇到思维的阻力,你可以尽情的享受简单之美。

这些是C/C++能做的

服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等。

对于热爱编程的人来说,有一群一起学习一起解答的小伙伴很重要!如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!

编程学习书籍分享:

编程学习视频分享:

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

相关推荐

TCP协议原理,有这一篇就够了

先亮出这篇文章的思维导图:TCP作为传输层的协议,是一个软件工程师素养的体现,也是面试中经常被问到的知识点。在此,我将TCP核心的一些问题梳理了一下,希望能帮到各位。001.能不能说一说TC...

Win10专业版无线网络老是掉线的问题

有一位电脑基地的用户,使用...

学习计算机网络需要掌握以下几方面基础知识

计算机基础知识操作系统:了解常见操作系统(如Windows、Linux)的基本操作和网络配置,例如如何设置IP地址、子网掩码、网关和DNS服务器等,以及如何通过命令行工具(如ping、tr...

网络工程师的圣经!世界级网工手绘268张图让TCP/IP直接通俗易懂

要把知识通俗地讲明白,真的不容易。——读者说TCP/IP从字面意义上讲,有人可能会认为TCP/IP是指TCP和IP两种协议。实际生活当中有时候也确实就是这两种协议。然而在很多情况下,它只是...

三分钟了解通信知识TCP与IP协议(含“通信技术”资料分享)

TCP/IPTCP/IP分层模型①应用层...

网闸与防火墙:网络安全设备的差异与应用

在网络安全领域,网闸(安全隔离网闸,GAP)和防火墙(Firewall)是两类重要的防护设备。尽管它们都服务于网络安全防护,但在设计理念、技术原理、安全效能及适用场景等方面存在显著差异,以下从五个维度...

S7-300的TCP/IP通信

一、首先在项目中创建2个S7-300的站点;二、硬件组态中,设置合适的TCP/IP地址,在同一网段内;...

西门子S7-1500 PLC的 MODBUS TCP通信

MODBUSTCP使MODBUS_RTU协议运行于以太网,MODBUSTCP使用TCP/IP和以太网在站点间传送MODBUS报文,MODBUSTCP结合了以太网物理网络和网络标准TC...

系统规划与管理师新版备考必备:第7章考点思维导图解析

备考系统规划与管理师的小伙伴们,福利又来啦!今天为大家带来《系统规划与管理师(第2版)》第7章考点的思维导图,助你高效梳理重点,让备考更有方向!...

TCP/IP、Http、Socket 有何区别与联系?

HTTP协议对应于应用层,Socket则是对TCP/IP协议的封装和应用(程序员层面上)。HTTP是应用层协议,主要解决如何包装数据。而我们平时说的最多的Socket是什么呢?实际上...

西门子PLC串口协议与以太网通信协议对比

西门子plc品牌众多,通信协议的类型就更多了,具体可分为串口协议和以太网通信协议两大类。...

网络编程懒人入门(十三):一泡尿的时间,快速搞懂TCP和UDP的区别

本文引用了作者Fundebug的“一文搞懂TCP与UDP的区别”一文的内容,感谢无私分享。1、引言...

程序员必备的学习笔记《TCP/IP详解(一)》

为什么会有TCP/IP协议在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样...

一文读懂TCP/IP协议工作原理和工作流程

简述本文主要介绍TCP/IP协议工作原理和工作流程。含义TCP/IP协议,英文全称TransmissionControlProtocol/InternetProtocol,包含了一系列构成互联网...

如何在 Windows 10 和 Windows 11 上重置 TCP/IP 堆栈

传输控制协议/Internet协议,通常称为TCP/IP,是您的WindowsPC如何与Internet上的其他设备进行通信的关键部分。但是当事情出错时会发生什么?你如何解决它?幸运的...

取消回复欢迎 发表评论: