正文
c语言函数有副作用 c语言中的副作用
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
为什么在c语言中使用gets函数是危险的
谈不上“危险”,
gets() 函数从标准输入读入 一行文本,直到读到 新行符 或 EOF 字符 之前,不会停止读入文本。也就是:gets() 不检查边界。因此,当变量空间 小于 一行字符串 时, 使用 gets() 会造成 溢出,程序出错。
例如:
#includestdio.h
int main( )
{
char s[5];
printf ("input one line: ");
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语言函数有副作用的信息别忘了在本站进行查找喔。