指针学习笔记(1)——运算符*

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语言程序设计》


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章