引用操作
#include
using namespace std;
void test1(int x){
x = 1024;
cout<
指针操作
#include
using namespace std;
void swap(int* a,int* b){
int t = *a;
*a = *b;
*b = t;
}
int main(){
int n = 10,m = 20;
cout<
#include
#include
void swap1(int x,int y)
{ //当传入的是整形变量的时候,在内存中另外分配了2个变量,复制了x,y的值
int temp;
temp=x;
x=y;
y=temp;
}
void swap2(int *x,int *y)
{
int *temp;
temp=x;
x=y;
y=temp;
}
void swap3(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
void swap4(int a[],int b[])
{
int temp;
temp=a[0];
a[0]=b[0];
b[0]=temp;
}
void swap5(int a[],int b[])
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void swap6(int *a, int *b)
{
if(*a != *b)
{
*a = *a ^ *b; //a = a ^ b ^ b;如果两个相同数疑惑,将会清0,因此要提前坐下判断
*b = *a ^ *b; //传统的赋值写法可适用于多种类型,其正确性也是毋庸置疑的。而异或写法除了整型之外,不 敢
*a = *a ^ *b; //保证其疑惑操作符在作用与浮点或自定义类型时还能正确的工作。
}
}
void swap7(int **x, int **y)
{
int *temp;
temp=*x;
*x=*y;
*y=temp;
}
int main()
{
int x,y;
x=4;
y=3;
int *ppx, *ppy;
*ppx = 4;
*ppy = 3;
swap1(x,y);
printf("swap1: x:%d,y:%d\n",x,y);//形参传值,不能交换,实际传过去是拷贝的一份,没改变主函数中x,y
swap2(&x,&y);
printf("swap2: x:%d,y:%d\n",x,y);//不能交换,函数中只是地址交换了下,地址指向的内容没有交换
swap3(&x,&y);
printf("swap3: x:%d,y:%d\n",x,y);//能交换,地址指向的内容进行了交换
swap4(&x,&y);
printf("swap4: x:%d,y:%d\n",x,y);//能交换,地址指向的内容进行交换
swap5(&x,&y);
printf("swap5: x:%d,y:%d\n",x,y);//能交换,地址指向的内容进行交换
swap6(&x,&y);
printf("swap6: x:%d,y:%d\n",x,y);//能交换,地址指向的内容进行交换
swap7(&ppx,&ppy);
printf("swap7: ppx:%d,ppy:%d\n",*ppx,*ppy);//能交换,传入的是指针的地址,然后将指针的内容交换
return 0;
}
swap1: x:4,y:3
swap2: x:4,y:3
swap3: x:3,y:4
swap4: x:4,y:3
swap5: x:3,y:4
swap6: x:4,y:3
swap7:ppx:3,ppy:4