指针基本概念
如果pointer_1=&a, 则&*pointer_1相当于 &a
pointer_2= pointer_1 相当于pointer_2=&a(将a的地址赋值给pointer_2)
*&a 相当于 变量a 相当于 *pointer_1
(*pointer_1)++ 相当于a++
- 指针变量赋值与输出
代码
#include <stdio.h>
main()
{
int a, b;
int *pointer_1, *pointer_2;
a = 100;
b = 10;
pointer_1 = &a;//把a的地址赋值给指针*pointer_1,即指针pointer_1=100
pointer_2 = &b;//指针*pointer_2=10
printf("%d,%d\n", a, b);
printf("%d,%d\n", *pointer_1, *pointer_2);
}
输出结果
- 交换两个指针变量的值
代码
#include<stdio.h>
main()
{
int a=2,b=3,*pa=&a,*pb=&b,t;
t=*pa;
*pa=*pb;
*pb=t;
printf("a=%d,b=%d\n",a,b);
printf("*pa=%d,*pb=%d\n",*pa,*pb);
}
输出结果
代码(用的递归函数的方法)
#include <stdio.h>
void swap(int *p1, int *p2);//声明一个swap函数,定义指针*p1 *p2
main()
{
int a, b;
int *pointer_1, *pointer_2;
scanf("%d %d", &a, &b);
pointer_1 = &a;
pointer_2 = &b;
if(a < b)
{
swap(pointer_1, pointer_2); //如果a>b,则调用swap函数
}
printf("\n%d > %d\n", a, b);//输出结果
}
void swap(int *p1, int *p2)
{
int temp;
printf("I'm swapping!\n");
printf("Please wait^_^");
temp = *p1; //temp = a;
*p1 = *p2; //a = b;
*p2 = temp; //b = temp;
}//调用完返回到主函数main中