打印
[经验分享]

goto关键字

[复制链接]
1632|37
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
loutin|  楼主 | 2025-2-20 16:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、goto关键字
#include <stdio.h>

int main()
{
        int a = 10;
start://冒号记得要加
        printf("%d\n", a);
        if (a > 0)
        {
                printf("hello\n");
        }
        goto start;

        return 0;
}
goto关键字使用注意事项:goto语句只能用于在当前函数内部进行跳转,不能跨函数或跳出函数

二、void关键字
void本身就被解释为空类型,强制不允许定义变量,因为大小不明确
不允许强制类型转化 int a = (void)10写法错误
C语言中,函数可以不带返回类型,此时默认返回值是int,比如定义函数:add()此函数没带返回类型,默认返回int,并且默认函数不需要参数
add(void)明确函数不需要参数,如果一个函数没有参数,将参数列表设置成void,是一个不错的习惯,因为可以将错误明确提前发现
void修饰函数返回值时,①:占位符,让用户明确不需要返回值 ②:告知编译器此返回值无法接受
void*
void* 可以定义变量,因为是指针,类型明确,大小为4/8个字节
void* 能被任何类型的指针接收
void* 能接收任意类型的指针(常用)
void* 的指针不能解引用,不能加减
在vs中sizeof(void)为0,而在Linux中sizeof(void)为1可以解引用和加减运算(了解)


使用特权

评论回复
沙发
jkl21| | 2025-3-10 09:54 | 只看该作者
滥用 goto 会打乱代码的自然流程,使得逻辑难以追踪。

使用特权

评论回复
板凳
burgessmaggie| | 2025-3-10 10:21 | 只看该作者
在大多数情况下,可以使用条件语句(if-else、switch)、循环控制语句(break、continue)和函数调用来代替goto语句。

使用特权

评论回复
地板
mickit| | 2025-3-10 11:21 | 只看该作者
虽然goto关键字在某些特定情况下可能是有用的,但通常情况下最好避免使用它。在使用goto时,务必谨慎考虑其对代码可读性、可维护性和调试难度的影响。

使用特权

评论回复
5
sdlls| | 2025-3-11 16:14 | 只看该作者
在使用goto语句时,要注意资源的释放问题。例如,在文件操作或动态内存分配后,如果发生错误需要跳转到错误处理代码段,应确保在跳转前释放已分配的资源,避免内存泄漏或文件占用。

使用特权

评论回复
6
plsbackup| | 2025-3-11 17:26 | 只看该作者
如果必须使用 goto,尽量限制在简单的跳转,比如跳出多层循环。
避免跨函数使用 goto。

使用特权

评论回复
7
jonas222| | 2025-3-12 16:07 | 只看该作者
使用goto集中处理错误,避免了重复的资源释放代码,提高了代码的清晰度。

使用特权

评论回复
8
linfelix| | 2025-3-12 19:55 | 只看该作者
在 goto 跳转前后避免修改同一个变量,因为这可能会导致状态不一致。

使用特权

评论回复
9
zerorobert| | 2025-3-12 20:27 | 只看该作者
在大多数情况下,可以使用更结构化的控制流语句(如if-else、while、for、switch-case等)来替代goto。这些语句通常更容易理解和维护。

使用特权

评论回复
10
mikewalpole| | 2025-3-12 20:59 | 只看该作者
如果确实需要使用goto语句,请确保使用有意义的标签名称,以增加代码的可读性。
避免在嵌套结构中使用goto,以免使程序逻辑难以理解。

使用特权

评论回复
11
plsbackup| | 2025-3-12 21:34 | 只看该作者
不恰当的跳转可能导致程序逻辑错误,引入难以发现的bug

使用特权

评论回复
12
modesty3jonah| | 2025-3-14 10:22 | 只看该作者
合理使用 goto 可以提高代码效率,但过度依赖会严重影响代码质量。建议遵循“能用其他方式解决的,绝不使用 goto”的原则。

使用特权

评论回复
13
abotomson| | 2025-3-14 15:20 | 只看该作者
尽可能使用if、else、for、while等结构化语句替代goto,提高代码的可读性和可维护性

使用特权

评论回复
14
wwppd| | 2025-3-14 15:52 | 只看该作者
goto语句可能导致程序结构不清晰,容易引入bug,特别是在较大的代码库中。因此,应尽量避免滥用goto语句,除非有特殊的需求或优势。

使用特权

评论回复
15
maqianqu| | 2025-3-14 16:51 | 只看该作者
跳转不会越过变量的声明和初始化语句,防止变量未定义或未初始化

使用特权

评论回复
16
uytyu| | 2025-3-15 10:44 | 只看该作者
在多层函数调用中快速终止并返回。

使用特权

评论回复
17
tifmill| | 2025-3-15 12:10 | 只看该作者
将复杂逻辑封装到函数中,通过函数调用实现跳转,避免使用goto。

使用特权

评论回复
18
tabmone| | 2025-3-15 13:20 | 只看该作者
频繁使用goto会导致代码结构混乱,难以跟踪程序执行流程,增加调试和维护难度

使用特权

评论回复
19
ccook11| | 2025-3-15 14:17 | 只看该作者
在C语言中,标签是局部的,无法在函数之间共享。因此,标签的作用域仅限于定义它们的代码块内。这意味着goto语句只能在一个函数内部跳转,不允许跳转出一个函数外部。

使用特权

评论回复
20
maudlu| | 2025-3-15 15:38 | 只看该作者
goto 可能直接跳过关键代码              

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

84

主题

1471

帖子

0

粉丝