【电子资讯】指针变量几个问题的进一步说明
指针变量可以进行某些运算,但其运算的种类是有限的。它只能进行赋值运算、部分算术运算及关系运算。
1.取地址运算符“&”是单目运算符,其结合性为自右至左,其功能是取变量的地址。取内容运算符“*”是单目运算符,其结合性为自右至左,用来表示指针变量所指的变量。在*运算符之后跟的变量必须是指针变量。需要注意的是指针运算符“*’和指针变量说明中的指针说明符“*”不是一回事。在指针变量说明中,“*"是类型说明符,表示其后的变量是指针类型。而表达式中出现的“*”则是一个运算符用以表示指针变量所指的变量。
2.指针变量的运算有:赋值运算、加减算术运算、两个指针变量之间的运算等。
3.赋值运算:把一个变量的地址,一个数组变量的首地址,一个函数的首地址赋值给指针
{
CLI();
XDIV =Ox00;
XMCRA=Ox00;
MCUCR=Ox00;
EIMSK=Ox00:
TIMSK=0x00:
SEt();
}
swap(int*pl,int*p2)
{
int temp;
temp=*pl:
*pl=*p2:
*p2=temp:
)
void main()
(
init_devices();
int a=5,b=6;
int*pointerl,*pointer2:
pointerl=&a;pointer2=&b;
if(a
printf(”\n%d,%d\n”,a,b);
)
对程序的说明:
swap()是用户定义的函数,它的作用是交换两个变量(a和b)的值。swap函数的形参pl、p2是指针变量。
程序运行时,先执行main()函数,a和b的值在声明中即进行了初始化。然后将a和b的地址分别赋给指针变量pointerl和pointer2,使pointerl指向a,pointer2指向b。接着执行if语句,由于a的值互换。