你精通C语言吗?

 精通C语言是什么体验,以下是我的一些感受,你精通C语言吗!!!
        1、 能够正确的分析和理解各种复杂的C语言类型

               比如:,int *array[10]与int (*array)[10]的含义,最经典的就是这个函数的声明:
             
 <span style="white-space:pre">	</span>void (*signal (int signo, void (*func)(int))) (int);
这是Linux系统函数中最复杂的一个函数,目前还遇到几个人可以解释清楚这个函数 类型的理解在C语言里面非常重要,不知道类型的含义也就不知道如何使用比如上面的signal你该怎么调用这个函数?!
        2、 彻底搞清楚指针与数组,包括所谓的多级指针和多维数组!
               要达到精通C语言编程,指针和数组时必须搞清楚,不然就不说你会C语言,指针的类型是什么作用,指针与数组的异同点,数组名这个奇怪存在到底是什么含义,数组名是不是代表数组中第一个元素的地址呢(如果你认为是的话,还需要学习哦),在多维数组中什么叫行指针,什么叫列指针(其实根本不存在多维数组,我的方法会让你认清多维数组的本质),我喜欢给学生出一道编程题如下:
                int a[2][3] = {{1,2,3},{4,5,6}};    ptr = a; 
问题1:如何声明ptr的类型?(我提出的问题);
问题2:如何用含有ptr的表达式表示a[1][2]这个元素呢?(这是运城学院的最后一道考试题);大家可以自己测试一下自己!                
        3、  理解和掌握编译器给出的错误和警告!同时搞清楚大部分遇到的错误或警告的深层次原因!
            
比如:
undefined reference to xxx 
segmentation fault;
xxx: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory!
warning: incompatible implicit declaration of built-in function 'printf'
warning: assignment from incompatible pointer type
warning: passing argument 1 of 'send' makes pointer from integer without acast  
                     等等 
        4、掌握C语言的编译过程,主要掌握链接过程以及三种链接方式的优缺点(普通链接、静态链接、动态链接) 
 
             习惯windows下集成开发环境下编程的学生,只知道点击一下编译按钮,等待运行结果,根本不知道这个过程中都经过了什么工作才能运行看到最终的结果,智能的集成环境确实能提高开发效率,但是对于我们菜鸟们来说,简直是误人子弟,让我们更加依赖IDE环境编程,甚至导致了大部分同学都不知道main函数的参数是什么含义!这就是我建议大家使用linux系统下命令行编译程序的 原因,编译之中的每个过程你都能看到和掌握,学习C语言不只是局限与C语言本身,还要掌握C语言文件如何一步步变成最终的可执行文件!
        5、掌握函数的操作(声明、定义、调用),最重要的是理解函数调用在内存中如何实现的!
大家在学习函数的时候肯定听过实参的值传递,值传递到底什么意思!肯定也写过用于交换两个变量值的swap函数,为什么要只有才能交换,为什么函数内的未赋值的指针变量称之为野指针,怎么“野“了!为什么不初始化的局部变量的初始值未知呢!为什么不能返回局部变量的地址呢!当传递的实参的空间超过四个字节就传递该实参的地址呢等等问题,只有了解了函数调用过程如何在内存中实现的才会真正的明白!         
        6、熟练的使用Linux操作系统。
                我们的学习环境是基于Linux内核的Red Hat 5.0,编译工具是GCC,调试工具是GDB,编程工具是VIM,在shell终端上通过各种字符完成编程的,学会使用Linux操作系统会大大提高你的竞争力,同时对于理解C语言编程有更好的帮助。 
       7完全掌握链表、队列、栈等常见的数据结构和常见的排序算法!
               学会使用C语言之后,在具体的应用中数据结构是非常重要的,在项目中链表的操作很常用 , 同时掌握常用的算法,如二分查找,冒泡、选择、快速、堆排序、基数排序! 
   8、标准IO(文件操作)
            学会使用C语言标准库中提供的函数操作文件,对于Linux系统来说,一切皆文件,所以文件的操作非常重要!
        9、 掌握分模块编程,学会使用make工具管理项目 以及学会基本的Makefile的编写

        在学习C的过程中不只是学习C语言本身!涉及到了操作系统级的问题,怎么才算精通, 没什么C代码是你不认识的!也不会在C语言本身上犯语法错误!能够自由的使用C语言去编程,这是我理解的精通C语言编程
  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值