C语言中值传递和地址传递(指针传递的区别)

1、值传递

值传递时,函数接收到的是参数的一个副本,对副本的修改不会影响到原始变量。

复制代码
#include <stdio.h>  
  
void modifyValue(int x) 
{  
    x = 10; // 修改的是x的副本,对原始变量无影响  
}  
  
int main() 
{  
    int a = 5;  
    modifyValue(a);  
    printf("After modifyValue, a = %d\n", a); // 输出: After modifyValue, a = 5  
    return 0;  
}

2、指针传递

当通过指针传递时,函数接收到的是变量的地址,因此函数内部对指针所指向地址的修改会反映到原始变量上。

复制代码
#include <stdio.h>  
  
void modifyAddress(int *ptr) 
{  
    *ptr = 10; // 修改ptr所指向的值,即原始变量的值  
}  
  
int main() 
{  
    int a = 5;  
    modifyAddress(&a); // 传递a的地址  
    printf("After modifyAddress, a = %d\n", a); // 输出: After modifyAddress, a = 10  
    return 0;  
}
相关推荐
CHTXRT5 分钟前
2025第十六届蓝桥杯大赛(软件赛)网络安全赛 Writeup
c语言·网络·web安全·网络安全·蓝桥杯·wireshark
钢铁男儿9 分钟前
C# 深入理解类:面向对象编程的核心数据结构
开发语言·数据结构·c#
Doker 多克34 分钟前
Python-Django系列—部件
开发语言·python
Felven36 分钟前
A. Everybody Likes Good Arrays!
数据结构·算法
江沉晚呤时1 小时前
深入解析 ASP.NET Core 中的 ResourceFilter
开发语言·c#·.net·lucene
huangyuchi.1 小时前
【C++11】Lambda表达式
开发语言·c++·笔记·c++11·lambda·lambda表达式·捕捉列表
XiaoyuEr_66881 小时前
如何创建一个C#项目(基于VS2022版)
开发语言·c#
小智学长 | 嵌入式1 小时前
单片机-89C51部分:4、固件烧录
c语言·单片机·嵌入式硬件
AI_RSER2 小时前
基于 Google Earth Engine 的南京江宁区土地利用分类(K-Means 聚类)
算法·机器学习·分类·kmeans·聚类·遥感·gee
Mercury-circle2 小时前
JavaScript基础知识合集笔记1——数据类型
开发语言·javascript·笔记