C++基础---空类型

1. 空类型

1.1 空类型,即void类型

  • void类型:常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明。
  • void类型:可以表示一种未知类型。
  • void类型:不能代表一个真实的变量。
    下面代码都企图让void代表一个真实的变量,因此都是错误的代码:
      void a; //错误
      void function(void a); //错误

      void function(void); //正确
  • void体现了一种抽象,这个世界上的变量都是“有类型”。
  • void的出现只是为了一种抽象的需要,如果你正确地理解了面向对象中“抽象基类”的概念,也很容易理解void数据类型。正如不能给抽象基类定义一个实例,我们也不能定义一个void(让我们类比的称void为“抽象数据类型”)变量。
  • void* :则为“无类型指针”,可以指向任何类型的数据

1.2 void类型定义函数

  • void真正发挥的作用在于:(1)对函数返回的限定;(2)对函数参数的限定

    
    #include <iostream>
    
    using namespace std;
    void add(void)
    {
        cout<<"调用了一个无返回值无参数列表的函数add()"<<endl;
    }
    int main()
    {  
        add();
        system("pause");
        return 0;
    }
    =>调用了一个无返回值无参数列表的函数add()

    注:在C++中,不能向无参数的函数传送任何参数,否则编译出错,提示“’fun’ : function does not take 1 parameters”。

1.3 void类型指针

  • void指针:表示未知类型的指针,可以将任意类型的指针直接赋值给void指针。真实地体现了内存操作函数的意义,因为它操作的对象仅仅是一片内存,而不论这片内存是什么类型。

    
    #include<iostream>
    
    
    #include<string>
    
    using namespace std;
    int main()
    {
        void* pv = NULL;
        string str = "string";
        int i = 1;
        pv = &str;
        cout<<"指向string类型变量:值为"<<*(string*)pv<<" 内存地址为"<<(string*)pv<<endl;
        pv = &i;
        cout<<"指向int类型变量的值:值为"<<*(int*)pv<<" 内存地址为"<<(int*)pv<<endl;
        system("pause");
        return 0;
    }
    =>指向string类型变量:值为string 内存地址为00AEFA8C
      指向int类型变量的值:值为1 内存地址为00AEFA80

参考文献 :
[1] 百度搜索关键字:C++数据类型、空类型、void*

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++指针是一种非常重要的概念,它是一种用于存储内存地址的变量类型,可以用于直接访问内存中的数据。指针的基本概念需要理解以下几个方面: 1. 指针的定义和声明:指针的定义需要指定指针的类型,它可以指向任何数据类型,包括整数、字符、浮点数、结构体等。例如,int *p; 声明了一个指向整数类型的指针变量p。 2. 指针的赋值:指针变量可以通过赋值来指向某个变量的地址,例如,int a = 10; int *p = &a; 将指针变量p指向变量a的地址。 3. 指针的解引用:指针变量可以通过解引用(*)操作符来访问它所指向的变量的值,例如,*p = 20; 修改了指针变量p所指向的变量a的值。 4. 指针的算术运算:指针变量可以进行加、减等算术运算,例如,p++; 将指针变量p指向下一个整数类型的地址。 5. 指针和数组:数组名本质上是一个指向数组首元素的指针,可以通过指针和数组名来访问数组中的元素,例如,int a[5] = {1, 2, 3, 4, 5}; int *p = a; cout << *p << endl; 输出数组a的第一个元素1。 6. 指针和函数:指针可以作为函数的参数来传递变量的地址,从而在函数内部对变量进行修改,例如,void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } 可以通过调用swap(&a, &b)来交换a和b的值。 需要注意的是,指针在使用时需要注意指针变量的值是否为,避免出现野指针的情况,同时需要注意指针变量的生命周期,避免指针变量指向的内存已经被释放的情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值