指针
一、指针变量的定义
*基类型 指针变量名
指针就是变量的地址。如果一个变量中存放的是指针,那么这个变量就叫指针变量
二、指针变量的引用
1).&运算符:称为取地址运算符
2).*运算符:称为指针运算符,或指向运算符,也称为“简介访问”运算符,例
int k,*kpointer;
kpointer=&k;/*将k的地址赋给指针变量kpointer,使kpointer指向k*/
k=5;
*kpointer=5;//*kpointer表示kpointer所指向的变量
“&”和“*”:两个算符优先级相同,运算顺序自右至左
&*a:先进行指向运算符的运算,它就是变量a,再执行&运算。因此其与&a相同,均为a的地址
*&a:先进行&a运算,即变量a的地址,再执行指向运算符。因此其为变量a
++,——与指向运算符优先级相同,运算顺序自右至左
3).指针变量的初始化
类型名 *指针变量名=初始地址值
例如
int a,b;
int *p1=&a,*p2=&b;/*在定义指针变量p1,p2的同时将它们的值分别初始化为变量a,b的地址*/
如使用未建立指向关系的指针变量的后果:需要修改的变量未被修改,不需要修改的内存单元中的内容却可能意外地被修改了。如
#include<stdio.h>
int main(void)
{
int a=100,b=10;
int *p1,*p2;
p1=&a;
*p1=50;
*p2=20;
printf("%x,%x\n",p1,p2);
printf("%d,%d\n",a,b);
printf("%d,%d\n",*p1,*p2);
return 0;
}
运行结果
fff4,fff6
50,10
50,20
使用指针时
1).清楚每个指针变量指向哪里
2).清楚每个指针指向的变量的内容
3).不使用未建立指向关系的指针变量
三、指针变量作函数参数
如果想通过函数调用得到多个要改变的值,比如m个,可先在主调函数中设m个变量,用m个指针变量指向它们,再用指针变量作实参,将这m个变量的地址传给形参,然后在调用函数中,通过形参指针变量改变这m个变量的值,主调函数中就可以使用这些改变了值的变量
以上内容来自清华大学出版社出版的教材:C语言程序设计