当前位置:阳光沙滩 >C/C++ > 查看文章
阿里云优惠码

C/C++中,函数的应用非常广泛,每个程序大都只有一个主函数main(),许多实用程序会包含若干个函数。

先聊聊参数传递的副本机制:                                                                                                                                                        副本机制,是指copy(拷贝)的思想,不论是传值调用还是传址调用,编译器都要为每个参数制作临时副本,或称拷贝,函数体中对参数的修改都是对副本的修改。

尝试调用函数改变变量的值:

#include <stdio.h>
#include <stdlib.h>
//函数的副本机制,每个形式参数,都会开辟一片内存
//不同的地址,不同的变量
void change(num)//函数改变没有成功
{
	num = 333;
	printf("\nchange num=%d", num);
	printf("\nchange &num=%p", &num);
}


void main()
{
	int num=10;
	printf("\nnum=%d",num);
	printf("\n&num=%p", &num);//输出地址
	change(num);
	printf("\nnum=%d",num);
	system("pause");//暂停
}                     

52

运用指针,将地址传递给 *p,改变原来地址的值:

#include <stdio.h>
#include <stdlib.h>
//函数的副本机制,每个形式参数,都会开辟一片内存
//不同的地址,不同的变量
void change(num)//函数改变没有成功
{
	num = 333;
	printf("\nchange num=%d", num);
	printf("\nchange &num=%p", &num);
}
void change1(int *p)//用指针变量对内存地址进行操作
{
	*p = 9;
}

void main()
{
	int num=10;
	printf("\nnum=%d",num);
	printf("\n&num=%p", &num);//输出地址
	//change(num);
	change1(&num);//传入地址
	printf("\nnum=%d",num);
	system("pause");//暂停
}

52

p是一个副本,新建一个变量容纳传递过来的p的值

传递什么参数,函数都有副本机制

改变一个变量,需要传入变量的地址

同样改变一个指针变量,需要指针变量的地址

本文链接:http://blog.sunofbeaches.com/archives/170 转载请注明出处.
如果喜欢:点此订阅本站
7K
相关文章
为您推荐
各种观点

报歉!评论已关闭.