数组指针与指针数组。数组指针:(指针)当指针变量里存放一个数组的首地址时,次指针变量称为指向数组的指针变量简称数组指针。指针数组:(数组)数组是用来存放一系列相同类型的数据,当然数组可以用来存放指针,这种用来存放指针的数组被称为指针数组,他要求存放在数组中指针的数据类型必须一致。整形指针:int*,print;能够指向整型数据的指针。浮点型指针:float*,pf;能够指向浮点型数据的指针。数组指针:能够指向数组的指针。
字符数组和字符数指针变量。一个字符串,可以使用一堆字符数组表示,也可以使用字符指针来表示。字符数组由若干个元素组成,每一个元素放一个字符。字符指针变量中存放的是地址(字符串)字符数组的首地址,绝不是将字符串放到字符指针变量中。一个字符组。因为他有确定的内存地址,所以字符数组名是一个常量,而定义一个字符指针变量的,它在指向某个确定的字符串数据的情况下,也可以多次重新赋值。
函数。函数时C程序基本的组成单位。一个C源程序可以由一个或多个源文件构成(C文件扩展名".C",一个源文件是一个编译单位,一个源文件可以由若干个函数构成函数间可以相互调用。函数分类:程序执行的角度:主函数、子函数。是否允许源文件外调用角度:内部函数、外部函数。用户使用:库函数(或标准函数)、用户自己定义的函数。函数调用:调用函数时,需要传入实际的参数值。如果没有参数值,只要在函数名后面加下圆括号就行了。
关于main()。C语言规定,main()是程序的入口函数,即所有的程序一定要包含一个main()函数,程序总是从这个函数开始执行,如果没有该函数,程序就无法启动。main()函数可以调用其他函数,但其他函数不能反过来调用main()函数,main()函数也不能调用自己。C语言约定:返回值0表示函数运行成功;返回其他非零整数表示失败。
关于exit()。exit()函数来终止整个程序的返回值。一般来说,使用两个常量作为它的这两个常量也是定义在stdlib.h里面:EXIT_SUCCESS(相当于0)表示程序运行成功。EXIT_FALURE(相当于1)表示程序异常中止。
函数原型。函数必先声明后使用。由于程序总是先运行main()函数,所以其他函数都必须在main()之前声明。只要程序开头处给出了函数原型,函数就可以先使用,后声明。所谓函数原型,就是函数在调用前提前告诉编译器每个函数的基本信息。其他信息都不需要。函数具体实现放在哪里,就不重要了。在函数调用时,检查函数原型和函数声明是否一致,只要一致就可以正确编译调用。
参数传递机制1:值传递。形参:在定义函数时,函数名后面的括号()中声明的变量称为形式参数,简称形参。(只是一个形式,在调用前并不分配内存)。实参:在调用函数时,函数名后面的括号()中使用的值(变量)表达式,称为实际参数,简称实参。形参和实参的功能主要是数据传递,按传递的是"数据"还是地位,分为"值传递"和"地址传递"两种方式。
字串符(字符指针)作为形参。字符串(或字符指针)作为函数的参数,与数值指针作为函数参数没有本质区别,传递的都是地址值,所不同的仅是指针指向对象的类型不同而定。
递归函数。递归函数调用时函数自己调用自己的现象就称为递归。递归的分类:直接递归,间接递归。指令函数的使用,C语言允许函数的返回值是一个指针(地址),这样的函数称为指针函数。函数体中的return命令须返回一个地址。函数指针的使用。一个函数本身就是一段内存里面的代码,总是占用一段连续的内存区域。这段内存区域也有首地址,把函数的这个首地址(或称入口地址)赋予一个指针变量,使指针变量指向函数所在内存区域,然后通过指针变量就可以找到并调用该函数,这种指针就是函数指针。
回调函数。指向函数a的指针变量的一个重要用途是把函数a的入口地址作为参数传递到其他函数b中,(此时函数b就称为回调函数).在此基础上,我们就可以在回调函数b中使用实参函数a。
内部函数与外部函数的作用。内部函数:如果在一个源文件中定义的函数只能被本文件中函数调用,而不能被同一源程序其他文件调用,这种函数称为内部函数,此时,内部函数需要使用static修饰。外部函数:外部函数在整个源程序中都有效,只要定义函数时,在前面加上extern关键字即可。
结构体的声明与基本使用。定义了新的数据类型以后,就可以声明该类型的变量,这与声明其他类型变量的写法是一样的。声明自定义类型的变量时,类型名前面,不要忘记加上struct关键字。结构体嵌套的使用。结构体的成员也是变量。那么成员可以是基本数据类型,也可以是数组,指针结构体等类型。如果结构体的成员是另一个结构体,这就构成了结构体嵌套。
共用体类型。C语言提供了共用体类型,用来自定义可以灵活变更的数据结构,它内部可以包括各种类型,但同一时间只能有一个属性,因为所有属性都保存在同一个内存地址,后面写入的属性会覆盖前面的属性,这样做的最大好处是节省内存空间。
内存动态分配函数。所谓动态分配内存,就是按需分配,申请才能获得。动态分配内存的基本规则。1、避免分配大量的小内存块。2、仅需要时分配内存。3、总是确保释放以分配的内存。