• C语言指针知识点


    指针的基本概念和常见用法

    *  为指针标识符。 如:*p

    格式:datatype *name = value;  //定义格式

    int *p;                    //定义,定义时必须带* 。

     

    float *p1 &a;

    char *p2 &c;

    p1 &b;

    p2 &d;                     //赋值,在定义的同时赋值需要带*,单独赋值时不能带*,因为P代表指针变量的值,即地址。*P代表指针指针变量指向的变量的值。

    //P1等同于&a, &p1等同于a

    //通过指针变量可以获取内存上的数据,也可以修改内存上的数据(P=&a;*p=b;)

    //*p 代表的是 a 中的数据,它等价于 a,可以将另外的一份数据赋值给它,也可以将它赋值给另外的一个变量。

    *在不同的场景下有不同的作用:

    *可以用在指针变量的定义中,表明这是一个指针变量,以和普通变量区分开;

    使用指针变量时在前面加*表示获取指针指向的数据,或者说表示的是指针指向的数据本身。

    //在32位操作系统下都在0 ~ 4,294,967,295这个数区间内,所以:在32位操作系统下,任何类型的指针变量都占四个字节

    ---------------------------------------------------------------------------------------------------------------------------------------------

    指针与数组

    //数组和字符串的变量名实际上相当于其指针。在一定范围内可以认为是等同效果的,但其实质并不一样

    int arr[] = { 99, 15, 100, 888, 252 };
    int *= arr;

    arr 本身就是一个指针,可以直接赋值给指针变量 p。arr 是数组第 0 个元素的地址,所以int *p = arr;也可以写作int *p = &arr[0];

    也就是说,arr、p、&arr[0]                                        这三种写法都是等价的,它们都指向数组第 0 个元素,或者说指向数组的开头。

    “arr 本身就是一个指针”这种表述并不准确,严格来说应该是“arr 被转换成了一个指针”

    区别:指针是一个变量,可以进行数值运算。数组名不是变量,不可以进行数值运算。

    数组指针指向的是数组中的一个具体元素(首地址),而不是整个数组,所以数组指针的类型和数组元素的类型有关,上面的例子中,p 指向的数组元素是 int 类型,所以 p 的类型必须也是int *

    指针的优势:

    指针可以直接修改指定变量的值,而不用通过函数来修改!

    生命的意义在于学习,学习让生活变得精彩
  • 相关阅读:
    【BZOJ4445】【SCOI2015】—小凸想跑步(半平面交)
    【BZOJ4444】【SCOI2015】—国旗计划(倍增+贪心)
    【BZOJ4443】【SCOI2015】—小凸玩矩阵(二分+最大匹配)
    【BZOJ4518】【SDOI2016】—征途(斜率优化dp)
    【BZOJ4199】【NOI2015】—品酒大会(后缀数组)
    【BZOJ3160】【2013湖北互测week1】—万径人踪灭(FFT+Manacher)
    ifconfig 查看网卡信息
    rm:删除目录和文件
    查看进程:ps
    wget 下载命令
  • 原文地址:https://www.cnblogs.com/gougouwang/p/11401424.html
Copyright © 2020-2023  润新知