C语言中的局部静态只读变量与函数使用解析

需积分: 34 4 下载量 92 浏览量 更新于2024-07-13 收藏 112KB PPT 举报
局部静态只读变量在C语言中是一个重要的概念,特别是在嵌入式系统开发中。这种变量由`static`和`const`两个关键字修饰。`static`关键字使得变量在函数调用结束后仍然保持其值,不会被重新初始化。而`const`关键字则表明该变量是只读的,一旦赋值后就不能修改。在嵌入式环境中,这样的变量会被编译器优化存储到非易失性的Flash存储器中,而不是消耗有限的RAM资源。在提供的代码示例中,`ChessManDisp`函数中的`Name`数组就是一个局部静态只读变量,用于存储棋子名称。 C程序设计实践中,函数是核心组成部分。函数定义包括返回类型、函数名以及参数列表。例如,`add`函数定义了一个计算两数之和的函数。函数声明通常在函数使用之前进行,以便编译器知道函数的存在和参数类型。如果函数在其他C文件中定义,需要使用`extern`关键字进行声明。在模块化编程中,头文件(.h)常用来包含函数声明,实现文件(.c)则包含函数的定义。 函数调用有多种方式,可以是直接调用,如`iSum=add(123,98);`,也可以作为其他函数的参数,如`printf("Sum=%d\n",add(789,-56));`。函数参数传递遵循值传递原则,这意味着函数内部对形参的修改不会影响实参的值。在`swap`函数的例子中,由于值传递,形参的改变并不会影响到实参,导致无法实现交换。为了解决这个问题,我们需要使用指针,让函数通过指针来间接修改实参的值。如修正后的`swap`函数所示,通过接收指向`int`的指针`*x`和`*y`,函数可以正确地交换两个变量的值。 总结知识点: 1. 局部静态只读变量:由`static const`修饰,存储在Flash,节省RAM资源。 2. 函数定义与声明:定义包含函数体,声明只告诉编译器函数存在及参数类型。 3. `extern`关键字:用于声明外部函数,确保编译器知道函数的定义在其他文件中。 4. 接口与实现分离:头文件包含函数声明,实现文件包含函数定义。 5. 函数调用:直接调用和作为参数传递。 6. 值传递原则:函数参数的修改不会影响实参的值。 7. 指针参数:通过指针实现对实参的修改,解决值传递问题。