c语言函数有副作用 c语言中的副作用

为什么在c语言中使用gets函数是危险的谈不上“危险”,
gets() 函数从标准输入读入 一行文本,直到读到 新行符 或EOF 字符 之前,不会停止读入文本 。也就是:gets() 不检查边界 。因此,当变量空间 小于 一行字符串 时,使用 gets() 会造成 溢出 , 程序出错 。
例如:
#includestdio.h
int main()
{
char s[5];
printf ("input one line: ");
【c语言函数有副作用 c语言中的副作用】gets(s);
printf ("%s\n",s);
return 0;
}
这里,char s[5];最多存放 5个字符,如果 输入一行字符 太多,例如 输入了 10个字符 , 程序会 出错 。出错其实没什么大不了,发现问题,你可以修改 成 char s[15]; 或 输入语句提示
printf ("input one line, less than 5 chars: ");谈不上“危险”.
c语言为什么有函数危险一说?。?比如gets()的溢出操作等;这是对程序产生BUG,出现不可靠性的一个描述,有些函数在某些意外情况会导致程序陷入不可控状态,仅仅是PC上运行最多也就是退出而已,但是如果是运行在飞机等系统里的话,就会有大麻烦 , 说危险也不为过 。因为英文文献里描述为dangerous,所以也就翻译为危险 。
函数执行需要一个栈空间,但这个栈空间容量是有限的,而且栈里存放了函数返回的地址 。
gets()函数在获取输入时,如果无限输入会造成栈空间溢出,在程序返回时,不能正常的找到返回地址,程序将发生不可预测行为
随机变量是什么? 那些不是随机变量 举一些例子1
随机变量表示随机现象(在一定条件下,并不总是出现相同结果的现象称为随机现象)各种结果的变量(一切可能的样本点) 。例如某一时间内公共汽车站等车乘客人数,电话交换台在一定时间内收到的呼叫次数等等 , 都是随机变量的实例 。
2
比如对于两个变量的,x,y,
假设了用解释变量x的方程式表示y ,
此时只有确定x,才能有对应的y预测值
因此x此时不是随机变量
C语言在函数内定义宏有什么坏处吗?宏定义写在函数内部主要是为c语言函数有副作用了方便c语言函数有副作用,宏定义是预处理的c语言函数有副作用,并没什么坏处
c语言函数有副作用的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于c语言中的副作用、c语言函数有副作用的信息别忘了在本站进行查找喔 。

    推荐阅读