不可以改变数据
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<Windows.h>
void change1(int a, int b) //副本机制 ,需要改变函数外部变量
{
printf("\n");
int temp = a;
a = b;
b = a;
printf("\n%p,%p", &a, &b);
}
可以改变数据
void change2(int * p1, int * p2) //副本机制 ,需要改变函数外部变量
{
printf("\n");
printf("\n change2 *p1, *p2=%d,%d", *p1, *p2);//指针也有副本机制,通过指向操作两个数据
printf("\n change2 p1 p2=%p,%p", p1, p2);//指针也有副本机制,通过指向操作两个数据
//指针也有副本机制,通过指向操作两个数据
int p;
p = *p1;
*p1 = *p2;
*p2 = p;
printf("\n change2 *p1, *p2=%d,%d", *p1, *p2);//指针也有副本机制,通过指向操作两个数据
printf("\n change2 p1 p2=%p,%p", p1, p2);//指针也有副本机制,通过指向操作两个数据
//指针也有副本机制,通过指向操作两个数据
}
不可以改变数据
void change4(int * p1, int * p2)
{
printf("\n");
int *ptemp;
ptemp = p1;
p1 = p2;
p2 = ptemp;
}
主函数
void main()
{
int a;
int b;
int *pa = &a, *pb = &b;
scanf("%d%d", pa, pb);
printf("\na b =%d,%d", a, b);
printf("\n*pa *pb =%d,%d", *pa, *pb);
//change1(a, b);
//change2(pa, pb); //本质交换地址 只有传递地址才可以
change4( pa, pb);
printf("\na b =%d,%d", a, b);
printf("\n*pa *pb =%d,%d", *pa, *pb);
system("pause");
}