指针

作者: nytta | 来源:发表于2018-12-09 00:27 被阅读13次

    地址运算符:指针&

    C语言中最重要的,也是最复杂的,概念之一就是指针,也是用来存储地址的变量。
    一般来说,当需要改变调用函数中的某个参数数值时,任何被调用的无返回值C函数都需要使用地址来完成这个任务。
    一元运算符&可以取得变量的存储地址,如pooh是一个变量名,则&pooh就是变量pooh的地址,可以看作变量pooh在内存中的存储位置。

    1.使用指针

    int i = 0; /* 声明和初始化int变量i,值为0 /
    int * ipointer; /
    声明int类型的指针变量ipointer /
    ipointer = &i; /
    指针变量ipointer的值为变量i的地址 */

    2.间接运算符: *

    当后面跟着是一个指针变量或地址时,*给出存储在地址里的数值,如:
    int var = 0;
    int * varptr = &var;
    int var2 = *varptr;
    *varptr表示指针varptr地址存储里的数值,那么变量var2的值等于变量var数值

    3.指针操作

    C提供了6种基本的指针操作。

    3.1 赋值

    可以把一个地址赋给指针。通常使用数组名或地址运算符&来进行地址赋值。

    3.2 求值

    运算符*可取出指针指向地址中存储的数值。

    3.3 取指针地址

    指针变量同其他变量一样具有地址和数值,使用运算符&可以得到存储指针本身的地址。

    3.4 将一个整数加给指针

    可以使用+运算符来把一个整数加给一个指针,或者把一个指针加给一个正数。两种情况下,这个整数都会和指针所指类型的字节相乘,然后所得的结果会加到初始地址上。
    如果想加的结果超出了初始化所指向的数组的范围,那么这个结果是不确定的,除非超出数组最后一个元素的地址能够确保是有效的。

    3.5 增加指针的值

    可以通过一般的加法或增量运算符来增加一个指针的值。对指向某数组元素的指针做增量运算,可以让指针指向该数组的下一个元素。比如指针变量ptr指向数组的第1个元素,进行ptr++操作,则ptr会指向数组的第2个元素。

    3.6 从指针中减去一个整数

    可以使用-运算符来从一个指针中减去一个整数。指针必须是第一个操作数,或者是一个指向整数的指针。这个整数都会和指针所指类型的字节数相乘,然后所得的结果会从初始地址中减掉,如果相减的结果超出了初始指针所指向的数组的范围,那么这个结果是不确定的,除非超出数组最后一个元素的地址能够确保是有效的。

    3.7 减小指针的值

    指针当然也可以做减量运算。比如指针变量ptr指向数组的第3个元素,进行ptr--操作,则ptr会指向数组的第2个元素。

    3.8 求差值

    可以求出两个指针间的差值。通常对分别指向同一个数组内的两个元素的指针求差值,以求出两个元素之间的距离。比如指针变量ptr2指向数组第3个元素,指针变量指向ptr0指向数组的第1个元素,则ptr2 - ptr0的值是2,表示指针所指向对象之间的距离为2个int数值大小。

    3.9 比较

    可以使用关系运算符来比较两个指针的值,前提是两个指针具有相同的类型。

    相关文章

      网友评论

        本文标题:指针

        本文链接:https://www.haomeiwen.com/subject/fmthhqtx.html