• C语言-(void*)类型指针


    (void*)类型指针:ANSI新增的:即定义了一个指针,但不指定指向任何类型(即指向抽象的数据类型)。void是空类型,只保存了指针的值,而丢失了类型信息

    1 通过强制类型转换可将其值赋给另一指针变量

    2.1用于动态存储函数的返回型指针 void malloc/calloc()

    2.2也可用于函数 void*fun() //表示返回值是一个地址,指向空(抽象)数据类型

    空指针NULL:不指向任何对象,不同于未初始化的野指针。

    #ifdef __cplusplus
         #define NULL    0
    #else    
         #define NULL    ((void *)0)
    #endif

    数组与指针:数组所占存储空间的内存:sizeof(数组名) 数组的大小: sizeof(数组名)/sizeof(数据类型)

    const 和 指针

    • 指向常量的指针,值不能改变,指向可改变
    • 常指针值能改变,指向不可改变
    • 指向常量的常指针,都不能改变
    #include <stdio.h>
     
    int main()
    {
      // 1 指向常量的指针:指向可变,值不能变可改变指针
      const int a = 10;
      int e = 20;
      int *p = &a;
      p=&e; //可指向其它对象
      //*p = 1000;//但指向&a后其值*a就不能变化
      printf("*p = %d
    ", *p);
     
      // 2 可改变指针
      const b = 10;
      int *pb = &b;
      pb = p;
      printf("*pb = %d
    ", *pb);
     
      // 3常指针
      const c = 10;
      int * const pc = &c;//常指针指向一个对象后指向不能变
      *pc = 1000; //但值可变(指向对象的值)
      //pc = pb;不能改变
     
      //4指向常量的常指针
      const d = 10;
      const * int const pd = &d;
      //*pd = 1000;都 不能改变
     
     
      printf("
    ");
      return 0;
    }
    View Code

    深拷贝与浅拷贝:

    浅拷贝即通过指针赋值的方法实现指向,但如果浅拷贝后要删除就会使另外对象中的指针就会无效,形成所谓的野指针,而访问无效指针是危险的。

  • 相关阅读:
    进度条4
    构建之法读书笔记02
    进度条3
    个人作业四则运算2测试
    个人作业3
    从小工到专家阅读笔记01
    个人冲刺07
    个人冲刺06
    个人冲刺05
    学习进度条08
  • 原文地址:https://www.cnblogs.com/jieruishu/p/3877579.html
Copyright © 2020-2023  润新知