当前位置: 首页 > article >正文

C语言基础篇5:指针(二)

接上篇:C语言基础篇5:指针(一)

 4 指针作为函数参数

        4.1 指针变量作为函数的参数

        指针型变量可以作为函数的参数,使用指针作为函数的参数是将函数的参数声明为一个指针,前面提到当数组作为函数的实参时,值传递数组的地址,而不是将整个数组赋值给函数中去。当用数组名作为实参调用函数时,指向该数组的第一个元素的指针就被传递到函数中去。例如,声明一个函数的参数为指针时,传递数组的方法如下:

void Function(int *p);//声明函数
int iArray[10];//声明整型数组
Function(iArray);//将数组名作为实参进行传递

        在上面代码中可以看到,在声明Function时,指针作为函数的参数。在调用函数时,可以将数组名作为函数的实参进行传递。

【示例4.1.1】调用自定义函数交换两个变量的值。

#include <stdio.h>

void swap(int *a,int *b){
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}

int main() {
    int x,y,*p_x,*p_y;
    printf("请输入两个数:\n");
    scanf("%d",&x);
    scanf("%d",&y);
    printf("x = %d\n",x);
    printf("y = %d\n",y);
    p_x = &x;
    p_y = &y;
    swap(p_x,p_y);
    printf("两个数交换的结果是\n");
    printf("x = %d\n",x);
    printf("y = %d\n",y);
    return 0;
}

        swap函数是用户自定义函数,在main函数中调用该函数交换变量a和b的值,swap函数的两个形参被传入了两个地址值,也就是传入了两个指针变量,在swap函数的函数体内使用整型变量temp作为中间变量,将两个指针变量所指向的数值进行交换。

        在函数调用过程中,主调用函数与被调用函数之间有一个数值传递过程。函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,在函数调用的过程中,形参的值发生变化,实参的值不会发生变化。通过指针传递参数可以减少值传递带来的“开销”,也可以使函数调用不产生值传递。C语言中实参变量的形参变量之间的数据传递是单向的“值传递”方式。指针变量做函数的参数也是如此。


http://www.kler.cn/a/147267.html

相关文章:

  • 基于Java的旅游类小程序开发与优化
  • 后台管理系统(开箱即用)
  • SpringBoot集成itext导出PDF
  • 【网络安全】网络安全防护体系
  • docker启动训练容器教程
  • mindspore发布件
  • C#,《小白学程序》第三课:类class,类的数组及类数组的排序
  • 在Spring Boot中使用@Async异步任务的线程池
  • Selenium 连接到现有的 Firefox 示例
  • C语言--每日选择题--Day27
  • buuctf web [极客大挑战 2019]PHP
  • app分发平台应用费用一般要怎么评估的?
  • diffusion model (九) EmuEdit技术小结
  • Docker-简介、基本操作
  • Langchain-Chatchat学习
  • [vxe-table] vxe-table-column配合v-if导致列样式与位置错乱
  • 文章解读与仿真程序复现思路——电力系统保护与控制EI\CSCD\北大核心《基于深度强化学习的城市配电网多级动态重构优化运行方法》
  • 学习c#的第二十四天
  • 最近数据分析面试的一点感悟...
  • 聚观早报 |魅族21搭载超声波指纹2.0;华为长安成立新公司
  • 研习代码 day42 | 动态规划——买卖股票的最佳时机 I II
  • unity学习笔记10
  • CF 1900B Laura and Operations 学习笔记
  • ETL+BI结合的数据集成工具
  • 了解FastSam:一个通用分割模型(草记)
  • 20231124给RK3399的挖掘机开发板在Andorid10下加鼠标右键返回