值传递和地址传递

值传递和地址传递

指针的优势体现在函数上,如果只是普通的值传递,那么变量的值将不会改变。而地址传递,可以通过操作指针直接访问地址去改变变量。

#include <stdio.h>
void swap1(int m, int n);
void swap2(int *m, int *n);

int main(int argc, char const *argv[])
{
	int a = 11;
	int b = 22;

	swap1(a, b);//值传递,通过函数交换两个值,形参的修改不会影响到实参
	printf("a = %d, b = %d\n", a, b);

	//地址传递,不管这个变量什么类型,只要是变量本身传递,就是值传递
	swap2(&a, &b);
	printf("a = %d, b = %d\n", a, b);

	return 0;
}


void swap1(int m, int n)
{
	int tmp;
	tmp = m;
	m = n;
	n = tmp;
	printf("m = %d, n = %d\n", m, n);
}


void swap2(int *m, int *n)
{
	int tmp;
	tmp = *m;
	*m = *n;
	*n = tmp;	
}

值传递在这里插入图片描述

地址传递
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/CCai_x/article/details/83824064
今日推荐