一、二级指针1.概念概念二级指针也是个指针该指针用来存放另外一个一级指针在内存中的地址(指向指针的指针)二级指针解引用一次变成一级指针2.定义二级指针int a88;int *pa;int **qp;3.使用二级指针*q --》二级指针解引用一次结果是*p--》p**q --》二级指针解引用两次结果是**p--》*p--》a二、函数的基本概念1.概念函数是用来处理问题的一段代码,我们把代码封装起来变成了函数函数提高了代码的复用性2.定义函数返回值类型 函数名字(形参列表){函数的具体代码}写法一 把函数的声明和定义都写在主函数的前面写法二 函数的声明放在主函数的前面函数的定义放在主函数的后面写法三 函数的声明放在主函数的前面函数的定义放在单独的.c文件中3.函数的使用(调用)语法规则函数名字(实参);4.函数调用的过程分析总结函数调用的时候自动入栈函数执行完毕自动出栈5.实参和形参之间的关系1.我关于传值和传递值的理解(1)实参和形参拥有各自独立的地址空间(2)实参赋值给形参有两种传值实参把自己的值拷贝一份给形参传地址实参把自己的地址赋值给形参(3)实参和形参同名可以同名但是毫无关系各自独立6.全局变量和局部变量6.1 概念全局变量在所有函数的外面定义的变量就是全局变量全局变量整个.c文件以及其他.c文件都可以使用(全局变量的作用域是文件作用域)。任意一个函数修改全局变量整个程序里后续所有函数使用的都是修改后的值局部变量在函数花括号内部定义的变量都是局部变量局部变量只能在定义它的那个函数内部使用其它地方不可以使用(局部变量的作用域是局部作用域)专业术语作用域(变量的作用范围)6.2 全局变量跟局部变量同名局部变量跟全局变量同名此时局部变量会隐藏全局变量导致全局变量无法使用6.3 初始化全局变量没有初始化默认都是0局部变量没有初始化默认是随机数7.函数的返回值和形参返回值只有如下三种情况第一种没有返回值 void第二种返回普通变量类型第三种返回指针,一定不可以返回局部变量的地址原因局部变量的作用域只是在定义它的函数中生效当函数退出的时候该局部变量(栈空间)的地址空间会被自动释放如果是返回局部变量的值是没有问题的(编译器会把局部变量的值备份一份到寄存器中),返回的就是寄存器里面的那个备份值形参只有三种情况第一种没有形参 int fun(){ }第二种有形参普通变量--》实参传值给形参第三种有形参指针--》实参传地址给形参8.数组作为函数的形参8.1 一维数组作为函数的形参int a[10]{56,89,10};int fun(int buf[10]) //写法一int fun(int *p) //写法二8.2 二维数组作为函数的形参int a[3][4]{56,89,10};int fun(int buf[3][4]);int fun(int *p,int n1,int n2);8.3 任何数组作为函数的形参求大小任何数组作为函数的形参sizeof()求大小都是当成指针来求大小数组作为函数的形参时会退化为指针
【嵌入式C语言】07.二级指针+函数
发布时间:2026/7/6 2:33:02
一、二级指针1.概念概念二级指针也是个指针该指针用来存放另外一个一级指针在内存中的地址(指向指针的指针)二级指针解引用一次变成一级指针2.定义二级指针int a88;int *pa;int **qp;3.使用二级指针*q --》二级指针解引用一次结果是*p--》p**q --》二级指针解引用两次结果是**p--》*p--》a二、函数的基本概念1.概念函数是用来处理问题的一段代码,我们把代码封装起来变成了函数函数提高了代码的复用性2.定义函数返回值类型 函数名字(形参列表){函数的具体代码}写法一 把函数的声明和定义都写在主函数的前面写法二 函数的声明放在主函数的前面函数的定义放在主函数的后面写法三 函数的声明放在主函数的前面函数的定义放在单独的.c文件中3.函数的使用(调用)语法规则函数名字(实参);4.函数调用的过程分析总结函数调用的时候自动入栈函数执行完毕自动出栈5.实参和形参之间的关系1.我关于传值和传递值的理解(1)实参和形参拥有各自独立的地址空间(2)实参赋值给形参有两种传值实参把自己的值拷贝一份给形参传地址实参把自己的地址赋值给形参(3)实参和形参同名可以同名但是毫无关系各自独立6.全局变量和局部变量6.1 概念全局变量在所有函数的外面定义的变量就是全局变量全局变量整个.c文件以及其他.c文件都可以使用(全局变量的作用域是文件作用域)。任意一个函数修改全局变量整个程序里后续所有函数使用的都是修改后的值局部变量在函数花括号内部定义的变量都是局部变量局部变量只能在定义它的那个函数内部使用其它地方不可以使用(局部变量的作用域是局部作用域)专业术语作用域(变量的作用范围)6.2 全局变量跟局部变量同名局部变量跟全局变量同名此时局部变量会隐藏全局变量导致全局变量无法使用6.3 初始化全局变量没有初始化默认都是0局部变量没有初始化默认是随机数7.函数的返回值和形参返回值只有如下三种情况第一种没有返回值 void第二种返回普通变量类型第三种返回指针,一定不可以返回局部变量的地址原因局部变量的作用域只是在定义它的函数中生效当函数退出的时候该局部变量(栈空间)的地址空间会被自动释放如果是返回局部变量的值是没有问题的(编译器会把局部变量的值备份一份到寄存器中),返回的就是寄存器里面的那个备份值形参只有三种情况第一种没有形参 int fun(){ }第二种有形参普通变量--》实参传值给形参第三种有形参指针--》实参传地址给形参8.数组作为函数的形参8.1 一维数组作为函数的形参int a[10]{56,89,10};int fun(int buf[10]) //写法一int fun(int *p) //写法二8.2 二维数组作为函数的形参int a[3][4]{56,89,10};int fun(int buf[3][4]);int fun(int *p,int n1,int n2);8.3 任何数组作为函数的形参求大小任何数组作为函数的形参sizeof()求大小都是当成指针来求大小数组作为函数的形参时会退化为指针