目录
一、关于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工具:提升效率、优化生活的科技利器
什么是SEO可以自学吗,seo零基础可以自学吗 ,ai1紫
GPT在智能聊天机器人中的作用:重塑沟通体验,开创智能未来,百万级ai
AI网页版智能问答,开启智慧沟通新时代,ai梦境档案用不了手柄
SEO就业前景如何?打造数字时代的职业新风口,常州武进区水产网站建设
“曝光量扩大,助力品牌腾飞的秘密武器”,盐山网站优化免费咨询
SEO观察:2025年搜索引擎优化的新趋势与机遇,seo2是什么状态
SEO攻略:搜索引擎优化,快速提升网站排名,网站推广网站优化费用
SEO部:开启数字化营销新纪元的幕后英雄,株洲营销推广是什么公司
GPT优化:让你的工作与生活更高效、更智能,Ai__79
ChatGPTApp怎么调大字体?提升阅读体验,让文字更清晰,推荐ai音频
SEO分类:从基础到进阶,全面解析SEO优化的关键要素,新建设网站排名
ChatGPT宕机恢复时间如何解决用户焦虑与技术背后的故事,ai人工智能写作火山
主题导航-引领互联网世界的智慧之路,大渡口网站建设方案
SEO很多,如何在竞争激烈的市场中脱颖而出?,在SEO优化中
AI生成文章免费工具,让创作变得轻松又高效,ai安心健
GoogleGPT-引领未来智能对话的革命,灵境ai画质
为什么说seo这么重要,seo重要吗 ,ai19920403
SEO客服:如何提升客户体验与业务转化的双赢策略,鄂州网站建设公司教程
seo网页优化什么意思,seo网站优化必知的10个问答,问吧,【解决】百度不知道 ,ai识别点读机
SEO挣钱之道:如何通过SEO实现网络盈利,宁晋网站建设商家
怎么降低文章的AI生成率:打造更真实、更有价值的内容
用AI写文章:效率与创意的完美结合
SEO桔子:提升网站排名的必备法宝,seo外包销售
OpenAI新产品与现有技术的完美结合:赋能未来的智能变革,培训 ai
什么是seo伪原创,seo就业前景伪原创怎么写 ,头像ai画怎么弄
AI免费生成文章的软件:轻松创作的秘密武器
OpenPose大白话解释:让你轻松理解姿态识别的神奇技术,ai天天晴
ChatGPT无法打开?这些解决办法让你重新畅享智能对话!,北大写作ai
SEO立刻:快速提升网站排名,带你走在搜索引擎前沿,网站建设怎么推广好做
OpenAI智能诊断医疗-开启精准医疗新纪元,跟侯维静学ai
seo需要什么人员,seo需要什么技能 ,画大学ai
ChatGPT崩了?用户称打开是一片空白,背后隐藏了什么?,ai 新技巧
什么是seo行业,seo是什么职业做什么的 ,ai标题字体效果
seo需要什么器械,seo需要什么器械才能做 ,长续航ai纯电汽车
优化投入,让企业更具竞争力,怎样推广营销方案
ChatGPT已识别但不可用?揭秘背后原因与解决方案!,小狸ai和斑马ai语文
seo管理系统是什么,seo网站管理 ,过度圆ai
SEO建议:如何通过优化提升网站流量,赢得市场竞争,自媒体网站免费推广平台
AI免费写作一键生成,效率与创意的完美结合
AI人工智能:改变未来的科技革命
seo软件工具,seo软件是什么 ,AI妆容
什么是seo优化营销,seo主要优化什么 ,ai绘画国风古韵
为什么选择B站VIP?让你畅享更丰富的视听体验,小门类网站seo
文字生成AI开启创作的新纪元
ChatGPT诞生背景:人工智能如何突破语言的边界,ai辅助市场调研
seo网站自学看什么书,seo技术适合自学吗 ,斑马ai阅读
AI提取文章重要内容:让信息抓取更高效、更精准,松鼠ai 教学
SEO优化如何进行:提升网站排名,轻松超越竞争对手,ai写作怎么操作手机
SEO文案:如何通过巧妙布局提升网站排名,吸引更多流量,娄底网站建设工作文案