1. 指针是一个地址,而指针变量时存放地址的变量。
2. 变量的指针就是变量的地址,存放变量地址的变量是指针变量,它用来指向另一个变量。
3. 一个指针变量只能指向同一个类型的变量。
4. *指针运算符,取指针所指向的对象的内容。
5. *和&两个运算符优先级相同,但按自右而左方向结合。
6. *和++两个运算符优先级相同,但按自右而左方向结合。 *p++等价于*(p++)
7. 指针变量作为函数参数,它的作用是将一个变量的地址传送到另一个函数中。
8. C语言中实参变量和形参变量之间的数据传递是单向的“值传递”方式。
9. 不可能通过调用函数来改变实参指针变量的值,但可以改变实参指针变量所指变量的值。
【交换两个数】
程序一:
void swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
【分析】:通过交换两个形参指针变量所指向的对象,从而交换传递过来的两个实参指针变量所指向的对象,而实参指针变量所指向对象本身的值并没有发生改变。程序可实现功能。
程序二:
void swap(int *p1,int *p2)
{
int * temp;
*temp =*p1;
*p1=*p2;
*p2=temp;
}
【分析】:temp中并无确定的值,因此temp所指向的单元也是不可预见的,所以,对*temp赋值很可能给一个存储着重要数据的存储单元复制,这样会破坏系统的正常工作。
程序三:
void swap(int *p1,int *p2)
{
int * p;
p =p1;
p1=p2;
p2=p;
}
程序四:
void swap(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
【分析】:程序三和程序四表面上看好像不一样,其实本质是一模一样的,仔细看笔记中的7 8 9 条就可以知道为什么不可以实现两个数的交换。
《C语言程序设计》