2018-04-11指针操作

#include 
#include 
int main(int argc, char *argv[]) {
    int urn[5]={100,200,300,400,500};
    int *ptr1,*ptr2,*ptr3;
    ptr1=urn;
    ptr2=&urn[2];
    printf("ptr1——首位的地址%p,*ptr1——针指指向的元素%d,&ptr1——地址的地址%p\n",ptr1,*ptr1,&ptr1);
    //加法
    ptr3=ptr1+4;
    printf("ptr1+4——首地址加4为urn[4]的地址%p,*(ptr+4)——a[4]的值%d\n",ptr1+4,*(ptr1+4)); 
    //递增指针
    ptr1++;
    printf("ptr1=%p,*ptr1=%d,&ptr1——地址的地址%p\n",ptr1,*ptr1,&ptr1); 
    //递减指针
    ptr2--;
    printf("ptr2=%p,*ptr2=%d,&ptr2——地址的地址%p\n",ptr2,*ptr2,&ptr2); 
    //恢复为初始值 
    --ptr1;
    ++ptr2;
    printf("ptr1=%p,ptr2=%p\n",ptr1,ptr2);
    //一个指针减另一个指针
    printf("ptr2=%p,ptr1=%p,ptr2-ptr1=%d\n",ptr2,ptr1,ptr2-ptr1); 
    //一个指针减去一个整数
    printf("ptr3=%p,ptr3-2=%p\n",ptr3,ptr3-2); 
    return 0;
}

2018-04-11指针操作_第1张图片
捕获.PNG

八种指针变量的基本操作
赋值:把地址赋给指针。例如,用数组名,带地址运算符&的变量名,另外一个指针。
解引用:*运算符给出指针指向地址上存储的值。
取值:和所有变量一样,指针变量也有自己的地址和值。对指针而言,&运算符给出指针本身的地址。
指针与整数相加(相减):可以使用+(-)运算符把指针与整数相加(相减),或整数与指针相加(相减)。无论那种情况,整数都会和指针指向类型的大小(以字节为单位)相乘,然后把结果与初始地址相加(相减)。
递增(递减)指针:递增(递减)指向数组元素的指针可以让该指针移动到数组的下(上)一个元素
指针求差:可以计算两个指针的差值。通常求差的两个指针分别指向同一个数组的不同元素,通过计算求出两个元素之间的距离。差值的单位与数组类型的单位相同。
比较:使用关系运算符可以比较两个指针的值。前提是两个指针都指向相同类项的对象。

你可能感兴趣的:(2018-04-11指针操作)