指针

作者: 风情云 | 来源:发表于2020-03-08 15:39 被阅读0次

指针

在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。这个是百度百科解释。其实我们只要将指针想象成一条绑着石头的绳子,绳子的一端是这个指针变量,绳子的另一端就是指向的数据地址。(图中指针指向数据1)


指针解释

指针定义

指针也是一种数据类型,它的定义方式和他们一致,都是要先声明类型,再定义变量。指针内部也是分整型指针(int),浮点型指针(float),字符型指针(char*)等。对应数据类型指针指向对应数据类型数据,不然会出现警告,读取数据也会出错。

    int* ptr;                           //定义指针变量
    int a = 20;                         //定义整型变量
    printf("a = %d\n",a);               //打印a的值
    ptr = &a;                           //指针与数据关联
    *ptr = 10;                          //通过指针修改数据
    printf("a = %d,*ptr = %d\n",a,*ptr);//打印a的值,*ptr的值
结果呈现
&:取址符 &a表示把a的地址拿到。
指针在定义时的指向未知,我们要把想要指针指向的数据的地址拿到,然后让指针指向这个地址(ptr = &a),就可以通过指针间接修改a的值(ptr = 20),可以想象指针有指向后,(ptr)可以顺着绳子找到a,就可以修改a。
过程讲解

指针大小

指针与普通数据类型一样,也有自己的内存空间。整数类型指针,还是字符类型指针都统称为指针,字节大小都一致。指针在32位平台上是4个字节,在64位平台是8个字节大小。


32位平台

判断带有*时是定义还是赋值

这个主要看*前面有无数据类型的定义,如果有就是定义,没有就是操作指针指向的内存。

    int a;
    int* ptr;  //前面有int数据类型,为定义
    ptr = &a;
    *ptr = 10; //前面没有数据类型,为操作指针内存

ptr与*ptr的不同

ptr是一个整型的指针,他是一个变量,可读可写。*ptr是指获取ptr指向的数据,这是一条指令,不是一个变量。两者是完全不同的东西。

    *ptr;         //无意义
    *ptr = 2;     //间接修改值
    int b = *ptr; //将指针指向的数据赋值给变量
ptr与*ptr

指针的使用

在c语言的学习中,指针占7成左右,指针是c语言的灵魂,学会指针,c基本就可以出师。指针在数组指针,指针数组,函数指针,作为形参指针传值,链表的使用等都可以用到。

注意事项

在使用指针时,需要注意的是不能操作非法内存,就是不能有操作野指针的存在(指向非法内存的指针),否则会造成段错误(段错误就是指访问的内存超出了系统所给这个程序的内存空间)。就是在指针没有指向实际的可操作内存时,使用指针间接修改内存就会造成段错误。这个问题是很严重的,操作非法内存会出现一系列错误,要杜绝这个问题的出现。在大部分涉及指针的程序出错基本就是这个问题。
解决办法就是指针赋初值为空,在需要操作内存时判断是否为空,不为空则操作内存。

    int* ptr = NULL;  //赋初值为空
    if(ptr != NULL)   //判断是否为空
    {
        *ptr = 10;    //不为空则操作内存
    }

指针的简单介绍到此结束。

相关文章

  • 混淆知识点

    1、指针数组&数组指针、常量指针&指针常量、函数指针&指针函数 数组指针&指针数组 数组指针的定义 int (*p...

  • C语言

    C 指针、指针变量、函数指针、指针函数、指针数组、数组指针、C 数组

  • 指针

    普通指针指针的指针 数组指针 函数指针

  • 函数指针

    概念: 指针函数, 函数指针, 指针数组, 数组指针, 指向数组的指针, 指向函数指针数组的指针。

  • C:函数指针的坑

    关于该死的函数指针和指针函数 先来个目录 常量指针、指针常量 数组指针、指针数组 函数指针、指针函数 1、先看第一...

  • C 语言指针

    指针类型:指针的读取长度,指针的读取方向(大小端) 空指针,无类型指针,野指针 常量指针,指向常量的指针 http...

  • 二、C语言基础

    A、指针 指针的概念:指针变量 和 指针 的区别 ?答:指针变量是指针的标记,也可以通过指针变量的标记操作指针内存...

  • 王道程序员求职宝典(十一)指针与引用,树

    指针与引用 指针声明typedef别名类型检查void*指针指向指针的指针函数指针typedef简化函数指针定义初...

  • NDK02

    指针 指针概念 1 .指针变量和指针的区别?答: 指针变量是定义指针的标记,指针就是指向的内存地址。2 .函数指针...

  • 12 C指针

    1、指针定义 2、指针进阶 3、指针使用 4、多级指针 4、指针和数组 5、指针和字符串 6、高级指针之和指向函数的指针

网友评论

    本文标题:指针

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