10.21_代码日记_c语言_交换函数

来源:互联网 发布:淘宝怎么上传不了图片 编辑:程序博客网 时间:2024/06/15 10:24
#include<stdio.h>void swap(char a,char b){    char t;    if(a>b)        t=a,a=b,b=t;}int main() {       char a,b,c,t;    while(scanf("%c%c%c",&a,&b,&c))    {        swap(a,b);        swap(b,c);        swap(b,c);        printf("%c %c %c\n",a,b,c);    }    return 0;}

我想运行交换函数时并不能实现,经过询问得知:
调用函数传进参数系统会在另一片内存将参数的值附进去,
在swap中交换的a,b只是值和原本相等,但并不是原本本身,
所以原本并不会发生什么变化,
即:函数并没有访问调用传递的实参本身,因而也不会修改实参的值。

为了验证,我添加了打印地址的语句:

#include<stdio.h>void swap(char a,char b){    char t;    if(a>b)        t=a,a=b,b=t;    printf("%p%p\n",&a,&b);}int main() {       char a,b,c,t;    while(scanf("%c%c%c",&a,&b,&c))    {        printf("%p%p\n",&a,&b);        swap(a,b);        swap(b,c);        swap(b,c);        printf("%c %c %c\n",a,b,c);    }    return 0;}

编译运行后结果如下:
这里写图片描述

注:出现后三行是由于调用了三次swap函数

原创粉丝点击