c - 我正在处理的 2 个程序遇到一些问题

标签 c

我一直致力于 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/

相关文章:

c - 根据用户第一次输入的数字向上或向后打印范围

c - 计算参数数量的宏

c - 我正在尝试使用指针在 c 中复制一个字符串

c - 将数据传递到多线程

c - 如果参数数量未知,如何遍历 va_list?

c++ - 为什么 INT_FAST16_MAX 被定义为 INT32_MAX (VS 2015)?

c - LCD 上的闪烁字符

c++ - 逗号运算符和乱序执行

c - 当客户端尝试重新建立连接时,g_io_channel_unix_new() 调用会导致 SIGSEGV

在 VS2010 的 CUDA C 中编译计算能力 2.x