void 不能代表一个真实的变量
void 不能代表一个真实的变量。
因为定义变量时必须分配内存空间,定义void 类型变量,编译器到底分配多大的内存呢。 下面代码都企图让void 代表一个真实的变量,因此都是错误的代码: void a; //错误
function(void a); //错误
void 体现了一种抽象,这个世界上的变量都是“有类型”的,譬如一个人不是男人就是女 人(人妖不算)。
void 的出现只是为了一种抽象的需要,如果你正确地理解了面向对象中“抽象基类”的概 念,也很容易理解void 数据类型。正如不能给抽象基类定义一个实例,我们也不能定义一 个void(让我们类比的称void 为“抽象数据类型”)变量。 void 简单吧?到底是“色”还是“空”呢?
return 关键字
return 用来终止一个函数并返回其后面跟着的值。
return (Val);//此括号可以省略。但一般不省略,尤其在返回一个表达式的值时。 return 可以返回些什么东西呢?看下面例子: char * Func(void) {
char str[30]; …
return str; }
str 属于局部变量,位于栈内存中,在Func 结束的时候被释放,所以返回str 将导致错误。 【规则1-38】return 语句不可返回指向“栈内存”的“指针”,因为该内存在函数体结束时 被自动销毁。