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
但我真的不熟悉它们在函数和主文件的上下文中是如何工作的.
如果有人可以列出它将如何工作的基本逻辑(在这个程序中),那将是非常棒的.作为一个数学专业,我可以理解数学和东西的操作,但指针让我没有困惑,但在我看来,有办法做到这一点,而无需处理变量的地址等.