菜鸟,C语言指针的迷惑。

来源:百度知道 编辑:UC知道 时间:2024/06/01 06:39:17
这是一个函数:
swap(int *p1,int *p2)
{int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
第一行处的*p1,*p2应该是初步定义指针变量吧?
下面的*p1,*p2应该是引用指针变量中的指针吧?
关于这个定义指针变量和引用指针变量中的指针,总是容易混淆,因为他们用的都是*号,怎样区别它们不容易出错?

另外:
main()
{int a=100,b=10;
int *pointer_1,*pointer_2;
pointer_1=&a;pointer_2=&b;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pointer_1,*pointer_2);
输入:5,9
返回:5,9
5,9
最后一行是引用指针变量中的指针输出&a,&b的值,后来我把最后一行"*pointer_1,*pointer_2"的星号去掉为什么输出的结果就错误了呢?指镇变量不也是变量吗?为什么变量a,b的值可以直接输出,指针变量的值不能直接输出吗? pointer_1=*pointer_1=&a=5这不成立吗?

你要的话,我可以发你三份资料,看完后马上能减轻你对指针的大部分疑惑.

我来说第二个,你多所定义的pointer_1是一个指针,他指向a所在的地址单元,&去是地址运算符,,可以理解为ponter_1里面是一个地址,你要是直接打印pionter_1的话也应该是一个地址单元,他存放的是a 所在的地址,*pionter才是取里面的数。pointer_1=*pointer_1=&a=5是不成立的。pointer_1=&a=系统分配的一个地址 *pionter=a=5
我也是新手一些理解。谢谢。。
一起努力

*pointer_1是表示变量a的内容,去掉*输出的是指针变量的内容.