• C语言:初始指针(1)


    指针是什么?

    指针是c语言中的一个重要概念,也是C语言的一个重要的特色,每一个学习和使用c语言的人,都应当深入了解地学习和掌握指针,学过C语言的人都知道,指针就是C语言的灵魂。

    在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。打个比方,一个房间的门口挂了一个房间号615,这个615就是房间的地址,或者说,615"指向"该房间。

    指针就是变量,用来存放地址的变量(编号)

    int a=10;//在内存中开辟一块空间
    int *p=&a;//&a的意思是将a的地址取出来,*p的意思是将取出来的a地址放进变量p中
    
    • 1
    • 2

    指针是用来存放地址的,地址是唯一标示一块地址空间的指针的;
    指针大小在32位平台是4个字节,在64位平台是8个字节.

    printf("%d\n",sizeof(int*));//8/4
    printf("%d\n",sizeof(short*));//8/4
    printf("%d\n",sizeof(char*));//8/4
    printf("%d\n",sizeof(double*));//8/4
    
    • 1
    • 2
    • 3
    • 4

    指针类型决定了指针进行解引用操作的时候,能够访问空间的大小

    int a=0x11223344;
    int*pa=&a;
    char*pc=&a;
    printf("%p\n",pa);
    printf("%p\n",pa+1);//因为是int类型,所以地址加了4个字节
    printf("%p\n",pc);
    printf("%p\n",pc+1);//因为是char类型,所以地址只增加了1个字节
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    野指针

    野指针:就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)

    野指针成因:
    1、指针未初始化
    int*p;//局部变量指针未初始化,默认为随机值
    *p=20;

    2、指针越界访问
    当指针指向的范围超出数组arr的范围时,就是野指针

    int arr[10]={0};
    int*p=brr;
    int i=0;
    for(i=0;i<=11;i++)
    {
        *(p++)=i;
    }  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3、指针指向的空间释放
    咳咳,这里适合放在动态内存开辟的时候讲解。

    如何规避野指针

    1、指针初始化
    2、小心指针越界
    3、指针指向空间释放即使置NULL
    4、指针使用之前检查有效性

  • 相关阅读:
    object常用的方法
    构建煤矿物联网大数据平台思路(1)
    【Python/crawl】如何使用Python爬虫将一系列网页上的同类图片下载到本地
    BeeV1.11 拦截器,多租户、Redis 缓存、注册器、类型转换器和结果处理器(上传 Maven 2022.5)
    AI项目二十三:危险区域识别系统
    企业所得税分析与预测
    实现领域驱动设计-应用结构
    高校宿舍系统
    tar解压出错:gzip: stdin: unexpected end of file的解决
    我们将「基础设施」看成是自身的角色和定位的时候
  • 原文地址:https://blog.csdn.net/qq_57430594/article/details/127968376