知识点:不能企图通过改变指针形参的值,而使指针实参的值改变。具体程序分析如下
#include <stdio.h> // 包含标准输入输出头文件
void fun(int *a, int *b) // 定义一个名为fun的函数,接受两个整型指针作为参数
{
int *k; // 声明一个整型指针变量k
k = a; // 将指针k指向指针a所指向的地址
a = b; // 将指针a指向指针b所指向的地址
b = k; // 将指针b指向指针k所指向的地址
}
int main() // 主函数
{
int a = 3, b = 6; // 声明并初始化两个整型变量a和b,分别赋值为3和6
int *x = &a, *y = &b; // 声明两个整型指针变量x和y,并将它们分别指向变量a和b的地址
fun(x, y); // 调用函数fun,并将指针x和y作为参数传递进去
printf("a=%d,b=%d\n",a,b); // 打印变量a和b的值
return 0; // 返回0,表示程序正常结束
}
运行结果如下 :
根据运行结果可以发现,a和b的值并没有交换