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

1.8 C语言之参数传递

1.8 C语言之参数传递

  • 一、参数传递

一、参数传递

  • 在C语言中,所有的参数传递都是值传递,也就是说,传递给被调用函数的参数值存放在临时变量中,而不是存放在原来的变量中。这与其他语言的引用传递有所不同。
  • 在C语言中,被调用函数不能直接修改主调函数中变量的值,而只能修改其私有的临时副本的值。
#include <stdio.h>
int f(int n);

int main()
{
	int n = 3;
	int fn = f(n);
	printf("main函数---变量n:%d\n", n);
	printf("main函数---f函数返回的n:%d\n", fn);
	return 0;
}

int f(int n) {
	--n;
	printf("f函数---变量n:%d\n", n);
	return n;
}
运行结果:
f函数---变量n:2
main函数---变量n:3
main函数---f函数返回的n:2
  • 必要时,也可以让函数能够修改主调函数中的变量。在这种情况下,调用者需要向被调用者函数提供待修改值的变量的地址,即指针,而被调用函数则需要将对应的参数声明为指针类型,通过指针间接访问变量,这就类似于java的引用,关于指针,后续章节再提。
  • 如果是数组参数,情况就有所不同了。当把数组名用作参数时,传递给函数的是数组起始元素的地址(它并不复制数组元素本身)。在被调用函数中,可以通过数组下标访问或修改数组元素的值。
#include <stdio.h>
int f(int arr[]);
int printArr(int arr[], int arrLen);

int main()
{
	int arr[3];
	arr[0] = 0;
	arr[1] = 1;
	arr[2] = 0;
	printf("调用f前-数组元素\n");
	printArr(arr, 3);
	int fn = f(arr);
	printf("main函数---f函数返回的值:%d\n", fn);

	printf("调用f后-数组元素\n");
	printArr(arr, 3);
	return 0;
}

int f(int arr[]) {
	arr[0] = 2;
	arr[1] = 3;
	arr[2] = 4;
	return;
}

int printArr(int arr[], int arrLen)
{
	for(int i=0; i< arrLen; ++i)
		printf("index:%d--- item: %d\n", i, arr[i]);
	return;
}

运行结果:
调用f前-数组元素
index:0--- item: 0
index:1--- item: 1
index:2--- item: 0
main函数---f函数返回的值:8
调用f后-数组元素
index:0--- item: 2
index:1--- item: 3
index:2--- item: 4
原文地址:https://blog.csdn.net/unwrapping/article/details/134620975
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/145389.html

相关文章:

  • MySql从入门到精通
  • 【ArcGIS Pro二次开发】(87):样式_Style的用法
  • API网关基础知识总结
  • Linux系统使用ollama本地安装部署DeepSeekR1 + open-webui
  • 《open3d qt 网格采样成点云》
  • stm32mp集成swupdateOTA升级
  • 【代码】平抑风电波动的电-氢混合储能容量优化配置(完美复现)matlab-yalmip-cplex/gurobi
  • 腾讯云运维工程师认证TCA
  • 乐得瑞LDR6020 VR串流线方案:实现同时充电传输视频信号
  • MYSQL where 子句
  • vue实现对话框指定某个对话内容的滚动到指定位置(滚动到可视区域的中间位置)
  • Datax安装部署及读取MYSQL写入HDFS
  • PowerShell基础
  • VBA技术资料MF86:将PPT文件批量另存为PDF文件
  • Effective Modern C++(1.顶层const与底层const)
  • java线程中,join()方法?
  • Vue 或者 React 中,什么情况下会用 Es6 的 Class类
  • 02 RANSAC算法 及 Python 实现
  • 电商项目高级篇-03 商品上架
  • Elasticsearch集群部署,配置head监控插件
  • 【spring(五)】SpringMvc总结 SSM整合流程
  • GitHub上8个强烈推荐的 Python 项目
  • Vue-报错No “exports“ main defined in xx
  • Leetcode.1590 使数组和能被 P 整除
  • Spring面向切面编程(AOP);Spring控制反转(IOC);解释一下Spring AOP里面的几个名词;Spring 的 IoC支持哪些功能
  • Java中wait()方法在synchronized方法中调用的奥秘