c - 确定回文 - 运算符 * 如何工作?

标签 c pointers palindrome

这个程序应该接受一个三位数并将其变成回文。 123 将变为 321

逻辑正确,程序编译正确。 :) 然而,这些逻辑并不容易。

我的教授用“堆栈图”解释事情,我发现它们很有帮助。我根据另一个程序创建了这个程序,因为我注意到它与 different program I made 之间的相似之处, 但指向是如何工作的呢?

#include <stdio.h>

void reverse_number(int in_val, int *out_val) {
    int ones, tens, hundreds;

    ones = in_val % 10;
    tens = (in_val % 100 - ones) / 10;
    hundreds = (in_val - (ones + tens)) / 100;

    *out_val = (ones * 100) + (tens * 10) + hundreds;
}

int main() {
    int in_val;
    int out_val;

    printf("Give a three digit num to reverse: \n");
    scanf("%d", &in_val);

    reverse_number(in_val, &out_val);
    printf("New number is: %d \n", out_val);

    return 0;
}

此外,我现在开始理解如何使用这些指针编写基于一种模板的程序,并且我非常基本地理解参数中的星号(声明为指针变量)的含义。

例如,我知道 m = &q; 为变量 m 提供了另一个变量 q 的地址并且我知道 m = *g; 意味着地址 g 的值将进入 m 但我真的不熟悉这些在 a 的上下文中如何工作函数和一个主文件。

如果有人能阐明它(在这个程序中)如何工作的基本逻辑,那就太棒了。作为一名数学专业的学生,​​我可以理解数学运算之类的东西,但指针并没有让我感到困惑,但在我看来,有一些方法可以做到这一点,而无需处理变量的地址等。

最佳答案

当我运行它时,它会编译,甚至可以正常工作。请参阅:http://ideone.com/RHWwI

所以这一定是您编译它的方式。你的编译器错误是什么?

关于c - 确定回文 - 运算符 * 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7856349/

相关文章:

c - c中函数和main之间的变量

c - 如何使用系统调用 write() 和 open() 将字符串数组写入 file.txt

C - 修改 const 结构内指针的数据

c - 从动态分配的二维数组中获取值

python - 计算回文子串的数量

c - 如何在忽略区分大小写和标点符号的情况下检查 C 中的回文?

c - OpenGL Hooking——渲染成任意大小的 FBO

c - 具有定义宽度的整数类型

c - 动态分配内存以保存用户输入

objective-c - 奇怪的 cocoa 虫?