自学C语言的要点,c语言学习难点重点.doc

c语言学习难点重点

21天学通C语言

1、三种基本结构:顺序结构、选择结构和循环结构;

2、无形参的main函数声明要写”int main(void)”,要有”return 0”,注意有形参main函数的声明;

3、标识符,关键字,保留字,标准函数库的函数名,

在数字上加上前缀和后缀,可以表示其数字类型:

sizeof(short int)=2;sizeof(long int)=4; sizeof(long long int)=8;其为字节数;

防止溢出,在vc++中,不支持long long

浮点数类型

Float型变量能正确显示有效数字7位,double型和long double型能正确显示小数点后16位;

注意float型在初始化时,在数字后面加上f;

限定词const和volatile:

Const主要作用是定义只读变量,只读变量的值在定义后不能再被改变;

Volatile告诉编译器修饰的变量是随时可能变化的,编译器优化时必须每次都重新读取这个变量的值,而不是使用保存在寄存器里的备份;

const volatile int data=10;的含义, 如果两个程序共享一块内存,外部程序改变了这块内存的值,而这段程序中变量data的值是不应该改变的,因此,data值必须从内存中读取,且不可改变。

整数的除法和浮点数除法有很大不同,整数除会产生截尾,趋零截尾

简化程序设计,增强可读性,可以使用宏定义和case语句的结合。

可以让看程序的人了解到更多的信息,容易明白每个分支的任务;

if else语句若有赋值语句,则可以用条件表达式代替,比如

编程时不要使用冗长复杂的结构,如果一定要使用,则在合适的位置加上括号;

巧用隐式选择

If(a!=0&&b/a>=a) {do something} 只有a不为0时,才能作为除数,b/a才算合法

提示输入,以达到要求

while和for语句在某些用法上是相似的,在不需要初始化或者不需要改变循环变量的时候,使用while语句。

Continue语句的使用法则

Else操作复杂的情况,使用if else语句显得结构不和谐,可读性差,把if头改为:if(!表达式),这样的话违背了正常和重要的分支放在if体内的原则,这时可以采用continue语句。

如果else只有一句或者使用continue或者break,退出循环;

双重for循环,数组的输入

数组的元素从第0个开始,在for中,第三个语句一般使用前加加,如果++i;

数组的容量大小可以使用宏定义

字符的初始化

函数的声明需要在main之外

21、变量定义就是定义函数中需要用到的变量。C函数中的变量定义必须放在函数体的最前面,允许变量定义之间有空行,但不能包括函数操作。下面的程序变量i 和变量j的定义在函数操作语句之后,没有放在函数体的最前面,因此,编译时程序将报错。

如果变量j和i,max属于不同的作用域,这种情况下的变量定义不必放在最前面。

头文件原则存放可能被外部使用的内容,一般包含以下部分:类型声明,函数声明,变量定义,包括具名常量和const常量。

文件管理:

函数在调用时不用再写函数和参数的类型

Extern声明,在没有定义某函数的源文件里使用extern声明该函数,便可以在这个文件使用该函数,在函数定义的函数声明中使用关键字extern,该函数就允许为其他文件的函数使用。

外部函数需要事先声明:

在自己作用域的函数,则在写函数时,需要加上static的定义:

函数声明的区别void print_array(int array[SIZE])和 void print_array(char *array[SIZE]);

Static变量还可以分为static局部变量和static全局变量

写函数,很多时候将main函数写在最后,这样就免去了定义函数的麻烦。

生存期是指程序运行时变量占有内存的整个时期,作用域是指变量可以被使用的代码区域,

在一个程序块或下层程序块中定义的变量,可以称为该程序块的内部变量,内部变量的作用域不能超过本层程序块。

在子函数中定义的局部变量只能在调用函数时才会被分配内存空间;函数结束时,局部变量的空间会被销毁。

全局变量:过度使用全局变量会导致资源浪费,不宜对全局变量做过多操作,破坏信息封装性;

不仅多个函数可以使用同名变量,而且不同程序块也可以使用同名变量;

C语言的变量都有两个属性:数据类型和存储类别,分为auto,static,register,extern;在C语言中,内存存储区可以分为4种:栈、堆、静止存储区和常量存储区。

栈是编译器管理的动态存储区域,用来存储临时变量,在需要时被分配,不需要时编

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 1. C 语言中的指针和内存泄漏 5 2. C语言难点分析整理 10 3. C语言难点 18 4. C/C++实现冒泡排序算法 32 5. C++中指针和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C中可变参数函数实现 38 8. C程序内存中组成部分 41 9. C编程拾粹 42 10. C语言中实现数组的动态增长 44 11. C语言中的位运算 46 12. 浮点数的存储格式: 50 13. 位域 58 14. C语言函数二维数组传递方法 64 15. C语言复杂表达式的执行步骤 66 16. C语言字符串函数大全 68 17. C语言宏定义技巧 89 18. C语言实现动态数组 100 19. C语言笔试-运算符和表达式 104 20. C语言编程准则之稳定篇 107 21. C语言编程常见问题分析 108 22. C语言编程易犯毛病集合 112 23. C语言缺陷与陷阱(笔记) 119 24. C语言防止缓冲区溢出方法 126 25. C语言高效编程秘籍 128 26. C运算符优先级口诀 133 27. do/while(0)的妙用 134 28. exit()和return()的区别 140 29. exit子程序终止函数与return的差别 141 30. extern与static存储空间矛盾 145 31. PC-Lint与C\C++代码质量 147 32. spirntf函数使用大全 158 33. 二叉树的数据结构 167 34. 位运算应用口诀和实例 170 35. 内存对齐与ANSI C中struct内存布局 173 36. 冒泡和选择排序实现 180 37. 函数指针数组与返回数组指针的函数 186 38. 右左法则- 复杂指针解析 189 39. 回车和换行的区别 192 40. 堆和堆栈的区别 194 41. 堆和堆栈的区别 198 42. 如何写出专业的C头文件 202 43. 打造最快的Hash表 207 44. 指针与数组学习笔记 222 45. 数组不是指针 224 46. 标准C中字符串分割的方法 228 47. 汉诺塔源码 231 48. 洗牌算法 234 49. 深入理解C语言指针的奥秘 236 50. 游戏外挂的编写原理 254 51. 程序实例分析-为什么会陷入死循环 258 52. 空指针究竟指向了内存的哪个地方 260 53. 算术表达式的计算 265 54. 结构体对齐的具体含义 269 55. 连连看AI算法 274 56. 连连看寻路算法的思路 283 57. 重新认识:指向函数的指针 288 58. 链表的源码 291 59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 346 65. C指针讲解 352 66. 关于指向指针的指针 368 67. C/C++ 误区一:void main() 373 68. C/C++ 误区二:fflush(stdin) 376 69. C/C++ 误区三:强制转换 malloc() 的返回值 380 70. C/C++ 误区四:char c = getchar(); 381 71. C/C++ 误区五:检查 new 的返回值 383 72. C 是 C++ 的子集吗? 384 73. C和C++的区别是什么? 387 74. 无条件循环 388 75. 产生随机数的方法 389 76. 顺序表及其操作 390 77. 单链表的实现及其操作 391 78. 双向链表 395 79. 程序员数据结构笔记 399 80. Hashtable和HashMap的区别 408 81. hash 表学习笔记 410 82. C程序设计常用算法源代码 412 83. C语言有头结点链表的经典实现 419 84. C语言惠通面试题 428 85. C语言常用宏定义 450
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值