【学习笔记】C语言(数组指针与指针数组+字符数组+函数+参数传递+字符串作为形参+递归函数+指针函数+回调函数+结构体嵌套+内存动态分配函数)

数组指针与指针数组。数组指针:(指针)当指针变量里存放一个数组的首地址时,次指针变量称为指向数组的指针变量简称数组指针。指针数组:(数组)数组是用来存放一系列相同类型的数据,当然数组可以用来存放指针,这种用来存放指针的数组被称为指针数组,他要求存放在数组中指针的数据类型必须一致。整形指针: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、总是确保释放以分配的内存。

相关推荐
蒸蒸yyyyzwd7 分钟前
后端学习笔记三个知识
笔记·八股
CCIE-Yasuo1 小时前
网络安全-学习数据库-Mysql-2
数据库·学习·mysql
La Pulga2 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
Zhao-Jichao2 小时前
AI Prompting for Everyone 课程笔记 - P19 数据分析 Data Analysis
人工智能·笔记·数据分析
li星野3 小时前
【学习记录】逻辑分析仪完全入门:从品牌方案到采样率、存储深度的核心概念解析
学习
旖旎夜光3 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
揽星河..3 小时前
【C语言】结构体
c语言·开发语言
ACP广源盛139246256733 小时前
选型笔记:Type‑C 扩展坞方案评估|DP1.2 转 HDMI2.0 桥接芯片 GSV2201D@ACP
笔记·硬件架构·硬件工程·视频·国产芯片
WEI_YANG_JU4 小时前
初中数学教学中合作学习的研究与实践
学习
码农小韩4 小时前
FPGA学习(一)——LED点灯与开发流程
学习·fpga开发·入门·环境配置·仿真·点灯