栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言形参传递

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言形参传递

C语言中的形参传递 值传递
#include 
#include 

void Exchg1(int x, int y) 
{
    printf("x地址 = %p, y地址 = %p.n", &x, &y);
    int tmp;
    tmp = x;
    x = y;
    y = tmp;
    printf("x = %d, y = %d.n", x, y);
}


int main(void)
{
    int a = 4;
    int b = 6;
    printf("a的地址%pn", &a);
    printf("b的地址%pn", &b);
    Exchg1(a, b);
    printf("a = %d, b = %d.n", a, b);
    printf("a的地址%pn", &a);
    printf("b的地址%pn", &b);
    return 0;
}

Exchg1为值传递,形参x、y为传入参数的复制值

a的地址000000000061fe1c
b的地址000000000061fe18
x地址 = 000000000061fdf0, y地址 = 000000000061fdf8.
x = 6, y = 4.
a = 4, b = 6.
a的地址000000000061fe1c
b的地址000000000061fe18
地址传递
#include 
#include 



void Exchg2(int *px, int *py)
{
    printf("px的值%pn", px);
    printf("py的值%pn", py);
    int tmp = *px;
    *px = *py;
    *py = tmp;
    printf("*px = %d, *py = %d.n", *px, *py);
}

int main(void)
{
    int a = 4;
    int b = 6;
    printf("a的地址%pn", &a);
    printf("b的地址%pn", &b);
    Exchg2(&a, &b);
    printf("a = %d, b = %d.n", a, b);
    printf("a的地址%pn", &a);
    printf("b的地址%pn", &b);
    return 0;
}

打印语句如下

a的地址000000000061fe1c
b的地址000000000061fe18
px的值000000000061fe1c
py的值000000000061fe18
*px = 6, *py = 4.
a = 6, b = 4.
a的地址000000000061fe1c
b的地址000000000061fe18
引用传递(C不存在引用传递,C++中试验)
#include 
#include 



void Exchg3(int &x, int &y)
{
    printf("x地址 = %p, y地址 = %p.n", &x, &y);
    int tmp = x;
    x = y;
    y = tmp;
    printf("x地址 = %p, y地址 = %p.n", &x, &y);
    printf("x = %d, y = %d.n", x, y);
}
int main(void)
{
    int a = 4;
    int b = 6;
    printf("a的地址%pn", &a);
    printf("b的地址%pn", &b);
    Exchg3(a, b);
    printf("a = %d, b = %d.n", a, b);
    printf("a的地址%pn", &a);
    printf("b的地址%pn", &b);
    return 0;
}

与值传递中唯一变化的地方在于形参中添加取地址符号&,形参x、y的地址与a、b的地址相同

a的地址000000000061fe1c
b的地址000000000061fe18
x地址 = 000000000061fe1c, y地址 = 000000000061fe18.
x地址 = 000000000061fe1c, y地址 = 000000000061fe18.
x = 6, y = 4.
a = 6, b = 4.
a的地址000000000061fe1c
b的地址000000000061fe18
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/779575.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号