您的位置:

程序员教c语言,程序员教c语言有用吗

本文目录一览:

C程序员怎么学习

一、知识点学习

①字符串

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

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

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

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

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

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

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

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

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

二、数组

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

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

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

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

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

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

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

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

三、结构体

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

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

四、宏

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

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

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

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

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

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

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

五、枚举

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

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

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

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

六、switch

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

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

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

七、static

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

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

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

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

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

八、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 常量如何初始化吗?

九、sizeof

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

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

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

十、指针

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

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

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

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

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

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

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

十一、动态分配内存

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

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

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

十二、函数

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

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

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

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

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

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

7、递归如何使用?

十三、变量

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

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

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

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

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

十四、连接(Linux)

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

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

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

4、动态链接有何优点?

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

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

十五、运行时的数据结构(Linux)

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

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

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

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

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

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

十六、Include

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

十七、声明

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

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

十八、关于 复杂度 :

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

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

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

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

自学c语言 零基础 看什么书 该怎么学

《《啊哈C语言:小学生坐在马桶上都可以读懂的C语言编程入门书》.zip》百度网盘资源免费下载

链接:

提取码:pusr

啊哈C语言:小学生坐在马桶上都可以读懂的C语言编程入门书

零基础如何学习C语言?

学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C语言是本文的主题。请注意,即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。

一、要读就读好书,否则不如不读。所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。

切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。

二、Unix/Linux还是Windows,这是个很大的问题。不同的编程环境会造就出不同思维的程序员。Windows的程序员大多依赖集成开发环境,比如Visual Studio,而Unix程序员更加钟爱Makefile与控制台。显而易见,集成开发环境更容易上手,在Windows上学习C语言,只需要会按几个基本的Visutal C++工具栏按钮就可以开始写Hello, World!了,而在Unix下,你需要一些控制台操作的基本知识。

建议初学者应该以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作为主要的学习环境,而且千万不要在IDE的使用技巧上过多纠缠,因为今后你一定要转向Unix环境的。Visual C++ 6.0使用很方便,调试也很直观,但其默认的编译器对C标准的支持并不好,而Dev C++使用gcc编译器,对C99的标准都支持良好。

如何学好C语言?

程语语言其实是一个很初级的工具,但是又必须熟练的掌握它,学懂一门编程语言就好像学会了写字,但是会写字的人不见得会写文章,而会写文章又不见的写得好。可是如果不会写字,那就一定写不出文章来。

在学习C语言之前,应该学好计算机基础。里面的很多概念对于C程序员都是非常重要的。如果在着手学习C之前,或者已经开始学习C,但是碰到了很多问题,应该再把计算机基础的书拿来好好看看。如果有足够的耐心,十足的毅力,应该再学习C语言之前学学汇编,这会对许多比较细腻的概念有清醒的认识。

那么可以在看完一遍C语言的教材后再看,但是一定要看一遍,一定会受益匪浅。不管看什么书,先认真地看懂,不要贪速度,应该力求深入的理解。

如果能够比较熟练的解决一本教材上的所有习题,那么就应该转入对算法的学习,尽管此时的C语言还称不上精通,有许多细节问题还不了解,许多问题还没有碰到,但是这些问题会在后面的工作和学习中得到解决的。

不需要多少资料,掌握一本《The C Programming Language》就足够了。继续学习就更加容易。建议不要找捷径,通过考试除外,真正的水平提高是建立在编程实践积累基础上的,必须一个一个程序的完成才能提高。

编程开发必须要学C语言吗?

要学习。编程开发的学习内容主要包括c语言、python和c+语言。C语言作为一种简单灵活的高级编程语言,它是一个面向过程的语言,一般是作为计算机专业的基础入门语言课程。C语言虽然入门相对难点,但是对于了解计算机的底层的运行机制有着极好的作用。无论多高级的编程语言都嫁接在计算机基本的体系机构之上,C语言主要的应用场景集中在操作系统开发、服务平台(容器)开发和嵌入式开发等领域。

而这些领域又是研发级程序员比较集中的领域,所以C语言对于研发级程序员来说还是比较重要的。如果未来要走研发级程序员路线,尤其是向物联网方向发展,那么应该重点学习一下C语言。大体而言,没有编程基础就选简单的编程语言,认识其基本思想,将一本语言学好,不断地实践总结,之后再转什么语言都是手到擒来的事情。千锋教育拥有多年IT培训服务经验,采用全程面授高品质、高体验培养模式,合作企业达20000余家,覆盖全国一线二线城市大中小型公司,成功帮助20001余名人才实现就业。