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种:栈、堆、静止存储区和常量存储区。
栈是编译器管理的动态存储区域,用来存储临时变量,在需要时被分配,不需要时编