zoukankan      html  css  js  c++  java
  • 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 *

    指针的优势:

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

    生命的意义在于学习,学习让生活变得精彩
  • 相关阅读:
    POJ-2112 Optimal Milking(floyd+最大流+二分)
    网络流之最大流与最小费用流入门&&模板
    0316 校赛训练赛3 解题报告
    string的子串截取
    hash题目大汇总
    Codeforces Round #235 (Div. 2)
    poj2002 -- 点的hash
    hlgHCPC2014校赛训练赛 1 BB.序列问题
    树状数组模板,RMQ模板
    从未放弃--2014.1.21
  • 原文地址:https://www.cnblogs.com/gougouwang/p/11401424.html
Copyright © 2011-2022 走看看