当前位置:首页 » 编程语言 » c语言的危险
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言的危险

发布时间: 2022-12-19 01:01:09

c语言的优缺点有哪些

C语言的优点有三个:
代码量小。
运行速度快。
功能强大。
任何语言有优点就有缺点。C语言的缺点可以用下面三点来概括:
危险性高。
开发周期长。
可移植性不如JAVA。

❷ C语言问题,未给指针变量指定初始值真的有危险吗

初学者最好养成给指针变量赋初值的习惯
至于原因嘛,就是上述文段:如果你不给它赋初值开始他就会乱指,当你对它操作时极有可能改动到他指向的内容,要是他指向已经被使用的地址,悲剧很可能就发生了;
当然了,如果你每次在使用到指针变量前都注意到它的指向,是可以避免出错的,但很多时候难免会大意,就好比掉了分号一样,任何人都知道是错的,但很多时候就是发生了
学习计算机编程,就是这样,有时候会因为一点点的疏忽而导致程序运行出错,甚至直接不能运行,所以建议养成良好的习惯

❸ c语言为什么有函数危险一说啊 比如gets()的溢出操作等;

是的,如果这是某书上的做法,那么,我只能说它为你们提供了一个错误的榜样。
这样使用gets()已经发生了溢出!这是gets()不检查数据边界的bug造成的。
另外,“字符串不是总是以'\0'作为串的结束符”,答案是肯定的,不然puts()函数就不能在合适的地方停下来了。这里st[15]被gets()函数赋值为'\0'。这里要说明的是st[15],st[16]是存在而不合法的,因为字符串实际上就等同于指针,类似st[16]是实在的地址但是是不应该被引用的。
为什么这里溢出没有产生错误?可能系统分配内存是以一个最小的大小整段整段的分配(这个我只是猜测)。你可以试着输入的字符串变长一点,就可以看到内存读写出错的提示了,这就是溢出的严重后果!我在dos系统下测试字符串长了直接当机。
验证1:st[15]被赋值为'\0'
#include"stdio.h"
main()
{
charst[15];
printf("inputstring:");
gets(st);
puts(st);
printf("%d",st[15]);
getch();
}
验证2:
#include"stdio.h"
main()
{
charst[15];
printf("inputstring:");
gets(st);
puts(st);
//printf("%d",st[16]);
st[1]='\0';
printf("%s\n",st);
printf("%s",st+2);
getch();
}
同样的建议:拒绝gets(),这本来就是一个有bug的函数!

❹ c语言危险的组合,请问这表达式是怎么来的

这实际上是数学问题,而不是C语言问题
1. n个盒子排成一行,如果把第一个盒子拿掉,剩下的n-1个盒子里面满足条件,有cnt(n-1)种,第一个盒子无所谓是什么盒子,因此上面的这种情况 2*cnt(n-1) 种。
2. n个盒子排成一行,如果把第一个盒子拿掉,剩下的n-1个盒子不满足条件,那么只有当前三个盒子是铀,第四个盒子是铅才可以。(注:第四个盒子如果是铀,那么234盒子就满足条件了)。

pow(2, n-4)是n-4盒子的所有情况,减去cnt(n-4)后n-4盒子满足条件的(因为本部分讨论的是“如果把第一个盒子拿掉,剩下的n-1个盒子不满足条件”)。得到第二种情况的数目是pow(2,n-4)-cnt(n-4)

然后加到一起就可以了

❺ c语言 整数相除有什么危险应如何避免这种危险

整数相除会降低精度,会丢失小数部分.

可以在整数相除之前先做强制类型转换,以避免这种危险

❻ C语言过时了吗

一句话,数落C的都是门外汉。

首先,C几乎是所有面向对象机器语言的基础,这么说的原因是有其他系列的语言,但是主体编程语言的基本思想,基本语法是很接近的,学好了C就等于给自己打下一份地基,学其他高级语言的时候经常会觉得似曾相识,很容易触类旁通。

其次,谁说C不是高级语言,而且并也不能说C不够现代,具体什么叫高级语言,我就不废话了,再给你举个例子吧,现在绝大多数人用的WINDOWS操作系统以及华丽着称的MAC系统还有专业人士才主要接触的LINUX系统都是C的杰作,呵呵,你说C过时吗?

然后,C的主要用途不是窗口程序,而是更接近于硬件的程序或者操作,如果你要写底层应用,比如硬件的驱动程序,比如你要直接读写内存,比如你要写操作系统^_^,这才是C的看家本领,这也是为什么几乎所有靠C吃饭的人都要继续学汇编的原因。

最后,帮你下个结论吧,如果只是自己玩玩,C见识一下,看看语法跟设计思路,读点例子开阔一下眼界,转到C++和JAVA写点看得见莫得着的东西,会很有成就感。如果打算以后走计算机这条路,C一定要学,要真正理解它。然后再根据自己的需要,选JAVA或者C++什么的。如果你以后可能会去搞工业编程,C要嚼烂。

教材推荐 谭浩强 《C程序设计》 绿皮的,很多人的入门书,包括我 ^_^

明白了?呵呵,加油学吧,希望下一次再见到你的问题,带着C的实例 ^_^