#include <stdio.h>
#define PR(x,y) printf("%3.1f,%3.1f\n",x,y)
void main()
{
float fa=2.3, fb=3.2,*pf1=&fa,*pf2=&fb;
float *pt ,f;
PR(*pf1,*pf2);
pt=pf1;
pf1=pf2;
pf2=pt;
PR(*pf1,*pf2);
PR(fa,fb);
f=*pf1;
*pf1=*pf2;
*pf2=f;
PR(*pf1,*pf2);
PR(fa,fb);
}
运行结果:
指针使用*来表示的,例如:int *pi 就定义了一个指向整形的指针 ,指针的名字是pi。
从上面的程序中我加深了对指针的理解,例如i=3 ,是把3存储到i所标识的存储空间,这里面的i其实有两个值,一个是内存地址,一个是内容3。那么在使用中到底使用的是哪个值呢???
当i位于赋值操作符的左边时,变现出的值为地址,在右边时变现出的值为内容。理解了这一点,我往下理解指针就好办多了,因为他们本质上是一样的。
*pi =i 理解为把i的内容存储到指针pi所指向的整形变量的空间。这样就完成了指针的赋值。