标签:pre void turn 值传递 零基础 amp href printf 直接
因为函数的调用过程中,实参到形参是值传递,因此,改变形参,是无法影响到实参的:
#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;
}
使用指针,函数调用过程中依然是值传递,但是,通过指针的解引用操作,根据传入的地址,直接修改了地址处的值,达到了交换的目的。
实践中,也常通过这种方法,无需返回值,仅使用指针从函数中带出信息。
标签:pre void turn 值传递 零基础 amp href printf 直接
原文地址:https://www.cnblogs.com/shellmad/p/11695615.html