目录
一、关于goto
- 高手潜规则:禁用 goto
- 项目经验:程序质量与 goto 的出现次数成反比
- 最后的判决:将 goto 打入冷宫
下面看一段 goto 副作用分析的代码:

#include <stdio.h>
#include <malloc.h>
void func(int n)
{
int* p = NULL;
if( n < 0 )
{
goto STATUS;
}
p = (int*)malloc(sizeof(int) * n);
STATUS:
p[0] = n;
free(p);
}
int main()
{
printf("begin...\n");
printf("func(1)\n");
func(1);
printf("func(-1)\n");
func(-1);
printf("end...\n");
return 0;
}
下面为输出结果:
这段代码中当 func 的入口参数 n 的值小于 0 时,就会 goto 到STATUS 那里去执行代码,但是由于跳过了分配内存环节,就不能把 n 的值赋给 p[0],强行赋值就会发成段错误。
二、void 的意义
void 修饰函数返回值和参数
- 如果函数没有返回值,那么应该将其声明为 void
- 如果函数没有参数,应该声明其参数为 void
void 修饰函数返回值和参数是为了表示“无”
下面这段代码就表示 f 函数的输入参数没有限制。
不存在 void 变量
- C语言没有定义 void 究竟是多大内存的别名
- 没有 void 的标尺
- 无法在内存中裁剪出 void 对应的变量
在下面的代码中,只有 void* 那条语句可以编译通过,因为 void* 指针是合法的。
小贴士
- ANSI C:标准 C 语言的规范
- 扩展C:在 ANSI C 的基础上进行了扩充
上面的代码在 ASNI C编译器中无法通过编译,但是对于支持 GNU 标准的 gcc 编译器而言是合法的。
void 指针的意义
- C 语言规定只有相同类型的指针才可以相互赋值
- void* 指针作为左值用于“接收”任意类型的指针
- void* 指针作为右值使用时需要进行强制类型转换
下面看一段通过 void* 实现 MemSet 函数的代码:
#include <stdio.h>
void MemSet(void* src, int length, unsigned char n)
{
unsigned char* p = (unsigned char*)src;
int i = 0;
for(i=0; i<length; i++)
{
p[i] = n;
}
}
int main()
{
int a[5];
int i = 0;
MemSet(a, sizeof(a), 0);
for(i=0; i<5; i++)
{
printf("%d\n", a[i]);
}
return 0;
}
下面为输出结果:
void* 定义的 src 表示可以接收任意类型的指针,所以数组 a 可以是任意类型。
三、小结
- 现代软件工程中禁用 goto 语句
- void 是一种抽象的数据类型
- void 类型不能用于定义变量
- void 类型用于声明函数无参数
- void 类型用于声明函数无返回值
- 可以定义 void* 类型的指针
- void* 类型的指针可以接受任意类型的指针值
相关推荐:
AI.生成重新定义创造力的新纪元
ChatGPT全球宕机:人工智能的崩塌与未来的挑战,中国ai和美国ai教父
SEO职责:为网站注入流量,提升品牌竞争力,拼多多女装关键词排名
zblog站群,zblog怎么样 ,欧卡2ai汽车如何使用
SEO场景下的数字营销:如何通过精准优化提升网站流量,陕西融发建设集团网站
SEO词的魔力:如何通过关键词优化打破流量瓶颈,免费网站建设高端
seo资源指的是什么,seo资料 ,绿眼AI
SEO深度解析:如何通过深度优化提升网站排名,带来流量和转化,咸宁网站建设大概费用
SEO针对中小企业的增长潜力:如何通过精准优化抢占市场先机,网络推广和营销就选y火10星评价
SEO更多-让你的企业站点在搜索引擎中脱颖而出,如何结交seo大神
为什么越来越多的人选择在知乎发布文章?这里面的机会你可能还没发现!,潍坊关键词排名提升
“爱站”:开启网站优化与流量增长的新纪元,seo入门ppt
AI写作的崛起-“只能AI写作”背后的巨大潜力,舞狮摄影ai
Bing搜索不能预览了?搜索引擎的新变革与挑战,ai制作一张窗花
2025年SEO最新技术:让你的网站脱颖而出!,ai少女特色
ChatGPT无法加载?检查您的网络设置并尝试重启ChatGPT,解决您的使用困扰!,ai光晕制作
SEO添加:提升网站流量与排名的必备策略,seo团队成员中国人
什么是神马排名?让你的网站脱颖而出,轻松占据搜索引擎的C位!,乳山网站优化关键词排名
亚马逊的seo是什么阿,亚马逊seo项目 ,中考用ai写作会判0分吗
SEO字:如何通过精准关键词提升网站流量与排名,赣州于都网站推广
用AI写的文章算原创吗?真相揭示,带你深度思考!
SEO这种营销方式,改变你网站流量的秘密武器,佛山网站设计建设
一键创作,助你轻松实现创意梦想,最低价刷粉网站推广
目前AI软件有哪些?智能新时代的必备工具
SEO费用如何根据预算选择最合适的SEO服务,营销类推广网站
ChatGPT常见问题汇总:解答你关于AI的一切疑惑,松鼠ai智能教适应教育
什么是seo行业,seo是什么职业做什么的 ,ai标题字体效果
SEO策划:让你的网站迅速脱颖而出的秘诀,seo优化和技巧
OpenAI账号申诉怎么办?全方位解析解决方案,ai写作免费公众号下载
ChatGPT崩了?用户称打开是一片空白,真相竟然如此!,zzz*明星AI换脸
seo读什么书,seo是哪个专业的 ,亚洲9ai吧
ChatGPT页面无法下拉?禁用浏览器扩展,轻松解决!,imba 1.6 ai
SEO新手必看:从零开始SEO优化的终极指南,随州网站优化技巧
seo要懂些什么软件,seo常用软件 ,ai写作网站网址大全
二级泛站群,zblog二级泛站群 ,李宗盛ai
SEO优化知识全解析:提升网站排名的秘密武器,ai出错合集
SEO优化大全:让你的网站排名轻松破局,精准引流更高效!,274357524ai
好用的AI写作工具,提升写作效率与创意的最佳选择
GPT版本全解:从基础到高级,如何选择最适合你的方案?,韩国ai人工智能
AI人工智能:改变未来的科技革命
打破创作边界,无限可能无限制生成文章的AI
seo监控什么意思,seo数据监控 ,ai panda眼镜架
什么叫改写-解读“改写”背后的艺术与技巧,网站制作建设模板图片
SEO而且:打造高效网站流量增长的秘密武器,滨江网站推广营销
AI免费生成:释放创造力的秘密武器
怎么用AI写文:让创作更轻松,效率翻倍
优方法-高效生活与工作的秘密武器,钻石营销推广方案
seo要学会什么,seo要学多长时间 ,NTU AI 录取
ChatGPT:智能对话开创新时代,ai做渐变直线
SEO优化的利器:提升网站排名的秘密武器,联想ai7g-3笔记本