c - 带有浮点数的 C 函数 while(*a++ = *b++)
问题描述
我没有学习 C,我必须告诉下面的函数是做什么的:
x(a,b){
float *a,*b;
while(*a++ = *b++);
}
我知道这个函数是如何使用而不是浮点字符工作的,但我不知道该怎么做。复制值或地址。如果值为什么在while循环中?
解决方案
这甚至不是“有效”代码(它基本上是有效的,20 年前,当没有类型的变量被假定为整数时)。
/*int*/ x(/*int*/a,/*int*/ b){
float *a,*b;
while(*a++ = *b++);
}
在下文中,我将假设 a 和 b 是int*
(至少在参数中)
这是未定义的行为。
float *a,*b;
隐藏给它的变量。
这两个浮点指针都未初始化(=它们可以具有每个可能的值,访问将使程序崩溃)在while循环中,您正在递增未初始化的指针。这可能导致例如崩溃。
只要*b
不为零,此方法就是对值进行复制。
推荐阅读
- javascript - 异步/等待 - 等待数据返回?
- c++ - 如何从 C++ 中的宏组成变量名?
- directus - 如何将两个值传递给 _between 运算符?
- android - 当打开键盘在 Flutter 中显示溢出
- oracle - 错误 ORA-01034:ORACLE 不可用和 ORA-27101:尝试以系统身份登录时,共享内存领域不存在
- django - 如何使用 ModelChoiceField 在 django 中构建测验?
- django - 有没有更好的方法来编写此代码以便可以维护 DRY?
- r - 与 R 中的其他组共享值时行之间的复杂合并
- python - 将元数据添加到 pytest_configure 文件给我内部错误 AttributeError: 'Config' object has no attribute 'metadata'
- python - 子图不显示在画布中