使用c语言有哪些需要注意的问题?的问题

  前言:我是喜欢编程的一只菜鸟在自学过程中,对遇到的一些问题和困惑有时虽有一点体会感悟,但时间一长就会淡忘很不利于知识的积累。因此想通过博愙园这个平台,一来记录自己的学习体会二来便于向众多高手请教。

  最近学习使用c语言有哪些需要注意的问题?主要使用C-Free进行编写。在学习过程中发现书中提示使用c语言有哪些需要注意的问题?必须要遵循某种写法,但是奇怪的是不按照这种写法却也能通过编译。

  按书中所讲:第11行必须写成struct point A而不能写成 point A。但实际却能顺利通过编译后来又用VC++ 6.0进行测试,仍然通过编译因为是同时看两本书自学,两本书上都这样写我相信书上的应该是正确的。经过多次尝试发现是默认文件扩展名的问题。

  C-Free和VC++ 6.0是根据源文件扩展名来编译的如果源文件扩展名为.c,则视为使用c语言有哪些需要注意的问题?源文件进行编译;如果源文件扩展名为.cpp则视为C++源文件进行编译。C-Free和VC++ 6.0默认嘚源文件扩展名都是.cpp编译器视为C++源文件进行编译,而C++允许在声明结构体时省略关键字struct所以就能顺利通过编译。

  如果保存时将源文件扩展名改为.c或者修改默认扩展名,就会视为使用c语言有哪些需要注意的问题?源文件进行编译因使用c语言有哪些需要注意的问题?不允許省略关键字struct,故编译时会提示错误所以,在学习使用c语言有哪些需要注意的问题?时应将IDE的默认扩展名设置为.c,或者先保存为.c文件再進行编译以避免造成不必要的困惑。

一、使用指针的时候需要注意几點:

二、常见的错误有几种:

1)内存分配未成功却使用了它

编程新手常犯这种错误,因为他们没有意识到内存分配会不成功常用解决辦法是,使用内存之前检查指针是否为Null

2)内存分配虽然成功,但是尚未初始化就引用它

犯这种错误主要有个起因:一是没有初始化的观念;二是误以为内存的缺省初值全为零导致引用初值错误(eg. char p[]={‘\0'}).内存的缺省初值究竟是什么并没有统一的标准,尽管有些时候为零所鉯无论用何种方式创建数组,都别忘了赋初值即便是赋零值也不可省略,不要嫌麻烦

3)内存分配成功并且已经初始化,但操作越过了內存的边界

例如在使用数组是经常发生下标”多1”或者“少1”的操作特别是在for循环语句中,循环次数很容易搞错导致数组操作越界。

4)忘记了释放内存造成内存泄露

 含有这种错误的函数每被调用一次就丢失一块内存,刚开始时系统的内存充足你看不到错误。当程序所占内存大时系统出现提示:内存耗尽。动态内存的申请与释放必须配对程序中malloc与free的使用次数一定要相同,否则肯定有错误

5)释放了內存却继续使用它

出现这种情况有三个原因:<1>程序中的对象调用关系过于复杂,实在难以搞清楚某个对象究竟是否已经释放了内存此時应该重新设计数据结构,从根本上解决对象管理的混乱局面<2>函数的return语句写错了,注意不要返回指向“栈内存”的“指针”或者“引用”因为该内存在函数体结束时被自动销毁。<3>使用free或delete释放了内存后没有将指针设置为NULL。导致产生“野指针”

[规则1] 用malloc或new申请内存之后因該立即检查指针值是否为NULL。防止使用指针值为NULL的内存

[规则2] 不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右值使用

[規则3] 避免数字或指针的下标越界,特别要当心发生“多1”或者“少1”操作

[规则4] 动态内存的申请与释放必须配对防止内存泄漏

[规则5] 用free或delete释放了内存之后,立即将指针设置为NULL防止“野指针”

以上这篇浅谈c/c++中使用指针需要注意的问题就是小编分享给大家的全部内容了,希望能給大家一个参考也希望大家多多支持脚本之家。

我要回帖

更多关于 使用c语言有哪些需要注意的问题? 的文章

 

随机推荐