c语言被取代,c语言会被取代吗

dfnjsfkhak 4 0

大家好,今天小编关注到一个比较意思的话题,关于c语言被取代的问题,于是小编就整理了2个相关介绍c语言被取代的解答,让我们一起看看吧。

  1. C语言中的goto语句。为什么老师反复强调不能用?
  2. c语言算底层语言吗?

C语言中goto语句。为什么老师反复强调不能用?

因为会破坏程序逻辑。goto本质上讲是c语言语法规范时候汇编延续来的,但是现在高级语言都是用顺序,判断,循环结构,这些就足够了。。你莫名其妙使用goto,我不会觉得你厉害,我会觉得你神经病吧

当你的规模比较庞大的时候你就能体会到goto的强大了,它可以强大到你怀疑人生,自己哪里来要去哪里这个哲学问题会让你崩溃到让你想投胎回炉重造。goto一时爽,项目火葬场。被review到你就等着人事找你办理离职手续。

c语言被取代,c语言会被取代吗-第1张图片-芜湖力博教育咨询公司
图片来源网络,侵删)

谈goto色变,主要是goto太自由了,甚至比汇编语言的jump更自由,jump还要考虑长地址短地址等跳转,而goto根本没有任何限制,他可以直接从函数内部调到函数外部甚至其它函数的位置。这就牵扯到一个问题,我们都知道函数调用是保护当前上下文,也是当前执行堆栈和寄存器,一旦进入被调用函数的内部,堆栈和寄存器就全变了,如果函数内部再用goto到其它地方函数不再返回,程序肯定就全乱了,而且导致内存泄露。所以,使用goto必须要加限制条件1.函数内部goto只能goto到函数内部,保证函数能够返回到被调用的2.中断内部用goto也是一样,goto必须要能够保证中断正常返回,不然也会导致中断异常总结,goto不推荐使用的原因主要是它可以不受任何条件限制,跳转到你想要去执行的地方,过于自由,但是是好事还是坏事取决于程序开发人员的设计是不是考虑得完善,是不是会导致这样那样的问题。

不是不能用,而是说如果用的不恰当,就很容易出现“面条代码”(结构混乱,难以理解)。

大学期间学习C的时候,老师讲过一个很典型的例子:

c语言被取代,c语言会被取代吗-第2张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

#include <stdio.h>

void main()

{

c语言被取代,c语言会被取代吗-第3张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

int a=1,b=2;
if(a<b)
goto aa;
printf("hello");
aa:printf("s");
return 0;
}

输出结果:s

将上面的代码改一下:

int a=1,b=2;
if(a>b)
goto aa;
printf("hello");
aa:printf("s");
return 0;

输出结果:hellos

c语言算底层语言吗?

汇编都是指令,它效率最高,跟底层硬件的接触最为密切,但是比较晦涩,对开发者要求较高,然后有了c c+,进一步包装了很多指令,因为就不用考虑太多跟底层硬件接触的知识了,现如今嵌入式应该是这些语言的根据地了,现在很多需要已经不用考虑你对计算机基础入门都比较简单,因此导致了程序员的门槛大大降低,学习降低,开发速度更快,但是他们永远的无法代替,比较java的jvn,涉及的底层内存清理等跟硬件接触的地方都是这些底层的需要写的,它只是调用这些接口方法实现

C语言是高级语言中的底层语言,它有下面几个特点

1. C语言是一个静态类型语言,在使用变量时需要声明变量类型,但是类型间可以有隐式转换

2. 不同的变量类型可以用结构体(struct)组合在一起,以此来声明新的数据类型;

3. C语言可以用 typedef 关键字定义类型的别名,以此来达到变量类型的抽象;

4. C语言是一个有结构化程序设计、具有变量作用域以及递归功能过程式语言;

5. C语言传递参数一般是以值传递,也可以传递[_a***_];

6. 通过指针,C语言可以容易地对内存进行低级控制,然而这引入了大的编程复杂度;

7. 编译预处理让C语言的编译更具有弹性,比如跨平台

C语言的这些特性,可以让程序员在微观层面写出非常精细和精确的编程操作,让程序员可以在底层和系统细节上非常自由、灵活和精准地控制代码。然而,在代码组织和功能编程上,C语言的上述特性,却不那么美妙了。

到此,以上就是小编对于c语言被取代的问题就介绍到这了,希望介绍关于c语言被取代的2点解答对大家有用

标签: 语言 goto 函数