對指針可以進行賦值、求值或取值、取指針的地址、將一個指針加上一個整數、增加指針的值、求差值的操作。請參看以下代碼展示了幾種情形:
#include<stdio.h>
int main(void)
{
int urn[5]={100,200,300,400,500};
int *p1,*p2,*p3;
p1=urn; //把一個地址賦給指針
p2=&urn[2]; //取得urn[2]的地址,并賦給一個指針
printf("數組各個元素的值和地址:\n");
for(int i=0;i<5;i++)
{
printf("urn[%d]=%d &urn[%d]=%p;\n",i,urn[i],i,&urn[i]);
}
printf("\n指針指向的地址,指針指向地址的值,指針的地址\n");
printf("p1=%p ,*p1=%d ,&p1=%p",p1,*p1,&p1);
printf("\n指針加上整數的效果(指針+int!=指針,指針+int==地址):\n");
printf("p1+4=%p,*(p1+4)=%d",p1+4,*(p1+4));
//printf("&(p1+4)=%p",&(p1+4))//error:p1+4是一個地址,不能對其進行取地址操作,但可以將p1+4賦給一個指針
p1++;//p++==p1+1。p1+1是一個地址,將p1+1賦給p1
printf("\n在p1++以后:\np1=%p ,*p1=%d ,&p1=%p\n",p1,*p1,&p1);
//求兩個指針差值
printf("\np2=%p,p1=%p,p2-p1=%d\n",p2,p1,p2-p1);
getchar();
return 0;
}