C语言的传值与传址调用

简介: 原文:C语言的传值与传址调用传值调用并不能改变两个变量的值,而传址能。 为什么,因为,传值调用,仅仅是在函数内,调换参数的值。 而地址所指向的值,改变的不仅仅是函数内,函数外也改变。 请看代码: 这里还要注意:通常我们不会返回局部变量的地址.
原文: C语言的传值与传址调用

传值调用并不能改变两个变量的值,而传址能。

为什么,因为,传值调用,仅仅是在函数内,调换参数的值。

而地址所指向的值,改变的不仅仅是函数内,函数外也改变。

请看代码:

这里还要注意:通常我们不会返回局部变量的地址.

/* ************************************************************************
* Filename: main.cc
* Description:
* Version: 1.0
* Created: 2011年12月14日 17时06分13秒
* Revision: none
* Compiler: gcc
* Author: YOUR NAME (),
* Company:
* ***********************************************************************
*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>

void swap_value(int x,int y)
{
int temp;
temp = x;
x = y;
y = temp;
printf("传值函数内的输出 %d %d \n",x,y);
}

void swap_address(int *x,int *y)
{
int temp;
temp = *x;
*x = *y;
*y=temp;
printf("传址函数内的输出 %d %d \n",*x,*y);
}

int main(int argc, char *argv[])
{
int x = 10;
int y = 0;

printf("x y \n");
printf("初值 %d %d \n",x,y);
//传值子程序调用(交换xy)
swap_value(x,y);
printf("传值函数外调用 %d %d \n",x,y);

//传地址字程序调用(交换x,y)
swap_address(&x,&y);
printf("传址函数外调用 %d %d \n",x,y);
return 0;
}



目录
相关文章
|
1月前
|
C语言
【C语言】指针进阶之传值调用与传址调用
【C语言】指针进阶之传值调用与传址调用
|
2月前
|
C语言
C语言结构体传值和传址及内存使用
C语言结构体传值和传址及内存使用
9 0
|
6月前
|
C语言
C语言进阶教程(传值调用和传址调用的区别)
C语言进阶教程(传值调用和传址调用的区别)
66 0
|
11月前
|
C语言
【C语言函数调用详解】——传值调用&传址调用
【C语言函数调用详解】——传值调用&传址调用
215 0
|
12月前
|
C语言
C语言 传址调用、二级指针做参数
空间的操作有两种: 名字,地址。如果传名字不行,传地址一定可以。 如果使用变量改变函数外部的参数时,要定义全局变量,如果使用局部变量的话,并不能实现该功能。例如:(不能实现改变外部变量的值)
79 0
C语言 传址调用、二级指针做参数
|
C语言
C语言结构体传值和传址及内存使用
C语言结构体传值和传址及内存使用
116 0
C语言结构体传值和传址及内存使用
|
C语言
手写C语言之函数操作-判断100-200内的素数-判断是否是闰年-二分查找函数实现-传址调用自增长函数实现(14)
手写C语言之函数操作-判断100-200内的素数-判断是否是闰年-二分查找函数实现-传址调用自增长函数实现
128 0
手写C语言之函数操作-判断100-200内的素数-判断是否是闰年-二分查找函数实现-传址调用自增长函数实现(14)
|
存储 程序员 C语言
手写C语言之函数概念-函数分类-实参与形参-传值调用与传址调用介绍(13)
手写C语言之函数概念-函数分类-实参与形参-传值调用与传址调用介绍
132 0
手写C语言之函数概念-函数分类-实参与形参-传值调用与传址调用介绍(13)
|
C语言
【C语言深度剖析】重点详解函数的形参和实参、传值和传址
【C语言深度剖析】重点详解函数的形参和实参、传值和传址
144 0
【C语言深度剖析】重点详解函数的形参和实参、传值和传址