C语言笔记 第八课 goto 和void分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_42187898/article/details/84860709

第八课 goto 和void分析

遭人遗弃的goto

高手潜规则:禁用goto
项目经验:程序质量与goto的出现次数成反比
最后的判断:将goto打入冷宫
8-1 goto副作用分析

void的意义

void修饰函数返回值和参数
如果函数没有返回值,那么应该将其声明为void
如果函数没有参数,应该声明其参数为void
void修饰函数返回值和参数是为了表示“无”
#include <stdio.h>
f()
{
}
int main()
{
int i = f(1,2,3);
return 0;
}

不存在void变量

C语言没有定义void究竟是多大内存的别名,没有void的标尺
无法在内存中裁剪出void对应的变量
#include <stdio.h>
int main()
{
void var; //error
void array[5]; //error
void * pv;
return 0;
}

小贴士

ANSIC:标准C语言的规范
扩展C:在ANSIC的基础上进行了扩充
#include <stdio.h>
int main()
{
printf(“%d\n”, sizeof(void));
return 0;
}
上面的代码在ANSI C编译器中无法通过编译,但是对于支持GUN标准的gcc编译器而言是合法的。

void指针的意义

C语言规定只有相同类型的指针才可以相互赋值
void指针作为左值用于“接收”任意类型的指针
void
指针作为右值使用时需要进行强制类型转换

8-2通过void实现MemSet函数
小结:
现代软件工程中禁用goto语句
void是一种抽象的数据类型
void类型不能用于定义变量
void类型用于声明函数无参数
void类型用于声明函数无返回值
可以定义void
类型的指针
void*类型的指针可以接受任意类型的指针值

猜你喜欢

转载自blog.csdn.net/weixin_42187898/article/details/84860709