• C语言学习指针指针的大小,野指针,空指针, 泛型指针


    指针的大小与类型没有关系, 都是四字节。

    int *p :int * 表示指针类型, 这是一个int 类型的指针

    chr *p: chr * 表示是字符类型的指针

    #include<stdio.h>
    
    int main (void)
    {
    
    
        printf("int * %d \n" , sizeof(int *));
        printf("float * %d \n", sizeof(float *));
        printf("double * %d \n", sizeof(double *));
        printf("long * %d \n", sizeof(long *));
        printf("char * %d \n", sizeof(char *));
        printf("long long * %d \n", sizeof(long long *));
    
    }
    
    int * 8
    float * 8
    double * 8
    long * 8
    char * 8
    long long * 8

    野指针: 

    #include<stdio.h>
    
    int main (void)
    {
    
    
        // 野指针
    
        int *p ; //只声明, 但是没有定义, 编译器自动赋值随机数
    
        *p = 200;
    
        printf("the *p is %d", *p);
    
    
    }

    这样是不行的, 指针p 所指向的地址是随机数, 没办法给其赋值200
    #include<stdio.h>
    
    int main (void)
    {
    
    
        // 野指针
    
       int *p = 10; // 0 -255 是操作系统所用的内存地址, 不行使用的。
    
       *p = 350;
    
       printf("*p value is %d", *p);
    
    
    }

    指针地址是不能使用的, 所以这样也是不行的

    综上, 杜绝使用野指针

    #include<stdio.h>
    
    int main (void)
    {
    
    
        // 空指针
    
       int *p = NULL;  // NULL == 0
    
       if (p != NULL)
       {
           *p = 300;
       }
    
    
       printf("*p value is %d", *p);
    
    
    }

    泛型指针

    #include<stdio.h>
    
    int main (void)
    {
    
    
        void *p;
        int a = 10;
    
        p = &a;
    
        printf ("* p is %d", *(int*)p);  // (int*)  强制类型转换成int* 型指针,(括号表示的是强制类型转换 )
    
    
    }
    
    
    * p is 10

  • 相关阅读:
    初识redis
    支付宝退款操作
    《地质灾害防治这一年2013》读书摘要
    地质灾害防治工作的经验和体会
    关于地质灾害防治的一些认识
    应急信息报送和值班工作的培训学习
    《地质灾害防治这一年2012》读书摘要
    关于开源GIS和商业GIS的讨论
    B树索引学习
    cordova 开发 ios app 简要流程
  • 原文地址:https://www.cnblogs.com/shunguo/p/16819624.html
Copyright © 2020-2023  润新知