您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
自学C语言的最大难题是什么?
指针,语言,最大自学C语言的最大难题是什么?
发布时间:2016-12-08加入收藏来源:互联网点击:
自学C语言的最大难题是什么?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
万事开头难,自学C语言最大的困难在于遇到问题不知道如何解决,还有不知道学到什么程度才能找到工作,这是自学编程语言最大的障碍,学到中间不知道什么时候是个头,遇到问题没有解决的途径,这是自学过程中遇到的最大问题,但这种不能归结为自学中遇到的难题,应该准确来讲是学习编程都会遇到的问题,和具体学习什么编程语言并没有太直接的关系,学习任何编程语言都会存在这种疑惑。
从事C语言编程开发已经有十几年,这门编程语言从入门的难易程度看并不是最难的,语法相对比较少,但C语言最大的特别是组合非常灵活多变,好多初学者学完基本的语法,觉得这门编程语言的代码应该都能看懂,曾经在学习初期学完语法之后去图书馆借了本linux内核解析去阅读,在开始阶段还是信心满满,结果看了几十页之后就开始有怀疑人生的感觉,又老老实实还回图书馆了,继续基础知识的学习之中了,C语言的理论掌握了距离真正的实践还是有很大的差距,实践是永远无法取代的过程。
C语言核心语法屈指可数,指针,函数,结构体,以及内存管理再加上常见的数据结构,说起来就是简单几句话的事情,但在实际过程中不断在实际操作中完成一个个编程场景的试验,不断在编程思路中填充编程脉络,就拿网络编程例子来讲,如果用C语言去完成需要对socket编程有所了解,socket编程属于操作系统的知识,编程的过程不仅仅是编程语言语法的问题,还会涉及到用户的使用习惯,以及编程的环境,常见的编程语言还有linux,windows,mac三种,不同的操作系统api的使用习惯也是不相同,编程语言的学习需要对编程环境有一个适应的阶段。
C语言的学习最快的方法就是直接在项目中实战,但是这种机会不是每个人都能涉猎到,参加培训的机构中也会竭尽全力在模拟这个过程,在自学的过程中也会不断的尝试在开源社区中寻找实战的味道,在真正项目实战中不断的总结经验,现在编程入门的门槛已经提升了许多,在十年前C语言学点基本的语法就能找到个工作去参与到实践中去,但现在已经没有那么好的机会了,这也是行业成熟进步的一种标记。
学习编程语言没有什么窍门,就是在实践过程中,不停的折腾摸索,遇到困难也是很正常的事情,保持一颗平常心,用不到两年的时间就能找到这门语言编程的感觉。C语言在嵌入式以及通信领域使用的比较多,安装一个linux系统在里面就可以找到很多实践的机会,很多linux命令底层的实现就是C语言,可以找这方面的资料去学习,在不断的学习过程中培养自己的学习兴趣,如果本身对于编程有兴趣可以继续保持,没有兴趣想办法培养兴趣,希望能帮打你。
回答于 2019-09-11 08:43:50
c语言最大的难题是指针和内存,这是难倒众多新手的关键地方,指针本身其实不难,难的是在开发中指针的逻辑变化。
指针移动
int * ip = NULL;
ip += 1; // ip - NULL = 4
void * vp = NULL;
vp += 1; //编译错误!
指针转换移动
unsigned int i = 0;
unsigned char *p = (unsigned char *)&i;
*(p + 0) = 255;
*(p + 1) = 255;
*(p + 2) = 255;
*(p + 3) = 255;
指针指向内存边界
int arr[] = {0};
*(arr + 1) = 1314; //超出边界
arr++; //不允许++
堆栈内存问题
栈主要是用于逻辑计算、数据交换等,以及函数内定义的临时变量,这部分变量只会在当前作用域有效。堆内存通过malloc开辟,数据则是在一直存在,除非free和退出程序。
1、注意栈溢出,不要把内存开销大的结构定义在栈上,因为栈的空间很小。
2、注意被调函数变量分配,防止返回临时变量地址给外部操作。
多级指针难点
多级指针的互相操作很容易懵圈,需要一级一级的查找地址,特别要认真和细心。
野指针
int * i = (int *)malloc(sizeof(int));
free(i);
*i = 10;
野指针是致命问题,能够直接让程序崩溃。这只是一个简单的程序,当代码变得非常复杂的时候,容易出错的几率更大。
栈作用域(有问题)
char* getstr()
{
char str[] = "abc";
return str;
}
char * p = getstr();
常量区作用域(没问题)
char* getstr()
{
char * str = "abc";
return str;
}
char * p = getstr();
总结
c 和 c++固然难学,只要用心去学习和理解,终会学会的!
回答于 2019-09-11 08:43:50
万事开头难,只怕有心人。只要你真正感兴趣,肯定能学好。
从一个大学学习过来人,和有几年编程工作经验者的角度讲讲我的经验。
我对题主问题的审题,理解题主可能是想学,没有人教,只能自学,但不知道方法,同时担心最难的地方搞不定。我来谈谈学习方法和最难的地方。
学习方法:买一本经典大学c语言教程(谭浩强版本),头一个月粗略读一遍,此一边不求完全看懂,只求对c语言编程有个全面了解。重点必须做的两件事情。
第一.每一章节中的程序代码一定要在电脑上抄一边,并且保证能正常运行,你会发现看不懂的东西,再敲代码的过程中就懂了。类似跟学自行车,学再多理论,比如实际去骑车,摔几次就会啦。也代码也是一样,你在调式代码的时候慢慢就理解了会写啦。
第二.把你不懂的知识点,在书本中圈出来,理解的要点不管对错都写下来(便于回头看的时候,对比纠正加深理解)。然后继续往后读,不要死盯一点不往前走。你会慢慢发现后面和前面有连贯的地方,也有不连贯的。回头再往前看,前面的知识其实很好理解。
在大学里面,读完一遍差不多一到两个月后,再精读一遍。
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |