亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C语言函数参数传递:地址与指针实战指南

C语言函数参数传递:地址与指针实战指南

通过清晰示例和专家讲解,掌握在C语言中向函数传递内存地址和指针的技巧。

在C语言中,传递地址而非值可让函数直接操作原始变量。这种称为 指针传递 的技术,对高效代码和跨作用域修改数据至关重要。

示例 1:通过引用交换两个整数

#include <stdio.h>
void swap(int *n1, int *n2);
int main(void) {
    int num1 = 5, num2 = 10;
    /* 传递 num1 和 num2 的地址 */
    swap(&num1, &num2);
    printf("num1 = %d\n", num1);
    printf("num2 = %d", num2);
    return 0;
}
void swap(int *n1, int *n2) {
    int temp = *n1;
    *n1 = *n2;
    *n2 = temp;
}

运行结果:

num1 = 10
num2 = 5

swap() 接收指向原始 num1 和 num2 的指针 n1 和 n2。通过解引用 (*n1 和 *n2),函数交换内存中实际存储的值,因此 main() 能看到更新后的数字。注意 swap() 返回 void,因为它直接修改参数。

示例 2:通过指针增加值

#include <stdio.h>
void addOne(int *ptr) {
    (*ptr)++; /* 增加给定地址处的值 */
}
int main(void) {
    int i = 10;
    int *p = &i;
    addOne(p);
    printf("%d", *p); /* 打印 11 */
    return 0;
}

这里 p 保存 i 的地址。addOne() 接收同一地址,解引用并增加底层值。调用后,*p(即 i)变为 11。

这些示例展示了指针传递的威力:函数可修改其作用域外的变量,实现无需额外复制的高效数据操作。

C语言

  1. C#关键字与标识符:规则、完整列表与最佳实践
  2. 掌握 C# 位运算与移位运算符:全面指南
  3. C# 类与对象:面向对象编程的基石
  4. 掌握 C# 抽象类与抽象方法:实战指南
  5. 理解 C# 分部类与分部方法
  6. 掌握 C# sealed 类与方法:用法、示例与代码安全性能提升
  7. C语言中将一维与二维数组传递给函数的实战指南
  8. 精通C语言指针:专家级实战教程
  9. 深入理解C语言数组与指针的关系
  10. 精通C语言结构体与指针:实战指南
  11. C 语言常量与字面量完全指南:类型、用法与最佳实践
  12. C 语言指针实战:从入门到高级编程