C++基础---空类型
2015-08-15 13:52
323 查看
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*