确定回文 - 操作员*如何工作?

Art*_*llé 0 c pointers palindrome

该程序应该采用三位数字并将其更改为回文.123会成为321.

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

我的教授用"堆栈图"解释了一些东西,我觉得它们很有帮助.我根据另一个程序创建了这个程序,因为我注意到了这与我制作不同程序之间的相似之处,但指向如何工作?

#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;
}
Run Code Online (Sandbox Code Playgroud)

此外,我现在开始理解如何使用这些指针基于一种模板编写程序,我基本上理解参数中的星形意味着什么(声明为指针变量).

例如,我知道m = &q;给变量m另一个变量的地址,q我知道这m = *g;意味着地址的值g会进入,m但我真的不熟悉它们在函数和主文件的上下文中是如何工作的.

如果有人可以列出它将如何工作的基本逻辑(在这个程序中),那将是非常棒的.作为一个数学专业,我可以理解数学和东西的操作,但指针让我没有困惑,但在我看来,有办法做到这一点,而无需处理变量的地址等.

cor*_*iKa 5

当我运行它时,它编译,甚至工作.请参阅:http://ideone.com/RHWwI

所以它必须是你如何编译它.你的编译器错误是什么?