C零基础视频-34-通过指针实现函数交换两个变量的值

目录

  • 回顾:函数的值传递
  • 使用指针交换两个变量的值

回顾:函数的值传递

因为函数的调用过程中,实参到形参是值传递,因此,改变形参,是无法影响到实参的:

#include <stdio.h>

void FakeSwap(int nArg1, int nArg2)
{
    int nTemp = nArg1;
    nArg1 = nArg2;
    nArg2 = nTemp;
}

int main(int argc, char* argv[])
{
    int nValue1 = 100;
    int nValue2 = 200;
    printf("交换前:%d, %d\r\n", nValue1, nValue2);
    FakeSwap(nValue1, nValue2);
    printf("交换后:%d, %d\r\n", nValue1, nValue2);
    return 0;
}

以上,形参的改变,无法影响函数调用的实参,因此无法完成nValue1, nValue2的交换。

使用指针交换两个变量的值

#include <stdio.h>

void PointerSwap(int* pArg1, int* pArg2)
{
    int nTemp = *pArg1;
    *pArg1 = *pArg2;
    *pArg2 = nTemp;
}

int main(int argc, char* argv[])
{
    int nValue1 = 100;
    int nValue2 = 200;
    printf("交换前:%d, %d\r\n", nValue1, nValue2);
    PointerSwap(&nValue1, &nValue2);
    printf("交换后:%d, %d\r\n", nValue1, nValue2);
    return 0;
}

使用指针,函数调用过程中依然是值传递,但是,通过指针的解引用操作,根据传入的地址,直接修改了地址处的值,达到了交换的目的。
实践中,也常通过这种方法,无需返回值,仅使用指针从函数中带出信息

原文地址:https://www.cnblogs.com/shellmad/p/11695615.html

时间: 2024-10-24 21:38:36

C零基础视频-34-通过指针实现函数交换两个变量的值的相关文章

用函数交换两个变量的值(C语言指针)

说道到交换两个变量值,很自然的想到,用第三方变量交换如下: #include <stdio.h> int swap(int x,int y) { int a,b,temp; temp=a; a=b; b=temp; } int main() { swap(a,b); printf("a=%d,b=%d",a,b); } 但是如果写在函数中,你调用这个函数,会发现,a和b的值在函数内部交换,当你在mian()中调用这个函数中,发现依然没有交换 这时候就需要用到指针,如下 1

C语言:指针实现交换两个变量的值

用指针交换两个变量的值(10分) 题目内容: 用指针交换两个变量的值 主函数参考: int main( ) { int a,b; scanf("%d%d",&a,&b); swap(&a,&b); printf("%d %d",a,b); return 0; } 输入格式: 两个变量 输出格式: 两个变量 输入样例: 5 8 输出样例: 8 5 code #include "stdio.h" //交换两个变量的值

C零基础视频-38-函数指针与typedef

目录 函数指针的定义 函数指针的复杂性 typedef 函数指针的定义 函数在内存中也是有地址的: #include <stdio.h> void fun() { printf("hello, world\r\n"); } int main(int argc, char* argv[]) { printf("%p\r\n", fun); return 0; } 既然有地址,就可以定义指针存储改地址,存储函数(首)地址的指针,称为函数指针. 函数指针的定义

交换两个变量的值(指针用法)

大意:用函数实现变量的值的交换,用到指针! 思路:该函数要实现变量的值的交换,形参需为两变量的地址.1)若不是地址,形参是两个变量,那么传进去的是两个单纯的数值,数值在函数内部做了交换,即函数内的两个局部变量(形参)进行了数值交换,交换后的效果并没有影响到函数外的实参(调用该函数相当于只是给函数提供了两个数值).2)若传给形参的是实参的地址(即指针),那在函数内部通过解引用该指针,可以找到实参的数值,此时再进行交换则交换的是存在实参地址上的数值.交换后的值依然在a和b的地址存放,只不过原来存在a

[零基础学python]初识永远强大的函数

函数,对于人类来讲,能够发展到这个数学思维层次,是一个飞跃.可以说,它的提出,直接加快了现代科技和社会的发展,不论是现代的任何科技门类,乃至于经济学.政治学.社会学等,都已经普遍使用函数. 下面一段来自维基百科(在本教程中,大量的定义来自维基百科,因为它真的很百科):函数词条 [函数这个数学名词是莱布尼兹在1694年开始使用的,以描述曲线的一个相关量,如曲线的斜率或者曲线上的某一点.莱布尼兹所指的函数现在被称作可导函数,数学家之外的普通人一般接触到的函数即属此类.对于可导函数可以讨论它的极限和导

使用指针交换两个整数的值

#include<stdio.h>void change_1(int a, int b);void change_2(int *a, int *b); int main(){ int a = 10; int b = 20; printf("changed before:"); printf("a=%d\tb=%d\n", a, b); change_1(a,b); printf("changed 1 affter:"); printf

C零基础视频-40-结构体指针

目录 结构体指针的定义 使用结构体指针引用结构体成员 结构体指针作为函数参数传递 结构体指针的定义 结构体指针的定义与基本数据结构的指针类似,使用"*"符号即可: #include <stdio.h> struct tagPetDog{ char szName[20]; char szColor[20]; char nWeight; }; int main(int argc, char* argv[]) { tagPetDog dog = { "旺财",

C零基础视频-35-指向同一个地址的指针的内涵

目录 C语言中的强制类型转换 指向同一个地址的指针 指针的两个内涵 C语言中的强制类型转换 C语言中运行将数据类型强制转换,使用(TYPE) 变量的方式即可. 比如,如下有警告: #include <stdio.h> int main(int argc, char* argv[]) { int nValue = 0; double fltValue = 3.14; nValue = fltValue; return 0; } 强制转换后没有警告: #include <stdio.h>

C零基础视频-33-指针的定义与使用

目录 指针的定义语法 指针指向变量地址 取变量的地址 变量地址赋值给指针变量 通过指针修改内存中的内容 指针的定义语法 指针变量中存放的是其他变量的地址,因此指针的类型,也与其要存放的地址类型有关. 有存放int型变量地址的指针,也有存放double型变量地址的指针. 具体而言,指针变量的声明语法是: 类型 * 指针变量名; 如: int *pIntValue = NULL; double *pDoubleValue = NULL; 以上分别定义了一个可以保存int变量地址以及可以保存doubl