我一直致力于 2 个项目:
void neg_zero(char* x)
{
if (*x < 0)
{
x = 0;
}
}
上面的代码不会检查 x 指向的字符是否为负数,如果为负数,则代码会将 x 归零。
第二个代码:
void weirdFunc(int* a, int * b) {
**if (a == b)**
{
**a = a + b;**
}
else
{
**b = a - b;**
}
}
void main() {
int a = 0, y=0;
int* x = NULL;
x = &a;
a = 6;
y = 5;
**weirdFunc(x, y);**
**printf("%d \n%d \n", x, y);**
}
这个函数接收两个指向 int 的指针,它们是这样的: 如果两个数字相等,则将它们的组合放入第一个参数中。 如果两个数字不同,则将其差异放入第二个参数中。
现在第二个功能是根据非常具体的需求制作的,因此如果您只能更改标记部分(**)。
谢谢大家!
最佳答案
第一个函数是正确的,因为它确实“代码将 x 归零”。如果您碰巧想要将 x
所指向的值归零,请将 x = 0;
更改为 *x = 0;
.
使用正确的类型和取消引用,第二个代码应如下所示:
void weirdFunc(int* a, int * b) {
if (*a == *b)
{
*a = *a + *b;
}
else
{
*b = *a - *b;
}
}
void main() {
int a = 0, y=0;
int* x = NULL;
x = &a;
a = 6;
y = 5;
weirdFunc(x, &y);
printf("%d \n%d \n", *x, y);
}
非常抱歉,由于限制,我无法纠正未包含正确 header 以及使用非标准 void main()
的问题。
关于c - 我正在处理的 2 个程序遇到一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36683388/