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

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

4 指针作为函数参数

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

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

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

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

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

cpp 复制代码
#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语言中实参变量的形参变量之间的数据传递是单向的"值传递"方式。指针变量做函数的参数也是如此。

相关推荐
知识分享小能手17 分钟前
C学习教程,从入门到精通,C语言指针 —— 详细知识点总结(10)
c语言·开发语言·学习
熊猫钓鱼>_>19 分钟前
开源鸿蒙平台 KMP 三方库 kotlin-csv 适配全流程:从编码假设到沙箱真机互通验证
开发语言·人工智能·华为·kotlin·harmonyos·鸿蒙
金融小师妹20 分钟前
多因子时间序列分析:美元与美债收益率变化对黄金价格+1.6%的影响
c语言·人工智能·git·决策树·pyqt
张张123y26 分钟前
# 后端第七课:FastAPI 实战入门(用刚学的 Python 写第一个 API 接口)
开发语言·python·mysql·api·fastapi
小陈不好吃40 分钟前
Java 泛型与类型擦除:从 PECS 原则到 TypeToken 绕过
java·开发语言·windows·pecs 原则·typetoken绕过
Shaoshing1 小时前
存储引擎与架构
java·开发语言·架构
额额额对了1 小时前
Linux 驱动开发:基于 platform 总线 + misc 设备的 DS18B20 单总线温度驱动
linux·c语言·开发语言·驱动开发·嵌入式硬件
devilnumber1 小时前
Java 代理模式(简单理解回顾)
java·开发语言·代理模式
奶盐cookie1 小时前
内存区域:栈、全局区和静态区
c语言
头像很酷1 小时前
嵌入式虚拟化-xvisor-跨越边界的读客
c语言·hypervisor·xvisor·嵌入式虚拟化