-1 c variables pointers function
我正在尝试编写这个程序:
编写一个函数digit(n, k),返回n(一个正整数)中的第 k 个数字(从右边开始)。例如
digit(829, 1) 返回 9digit(829, 2) 返回 2digit(829, 3) 返回 8如果 k 大于 n 中的位数,则让函数返回 0。
我收到一条警告消息:
从返回类型为 int 的函数中返回 (int*)(int,int) 从指针生成整数而不进行强制转换
int digit(int a,int b);
int main (void){
int i, c;
printf("Enter the number");
printf("Enter the digit you want to check");
scanf("%d",&i);
scanf("%d",&c);
puts("\n");
printf("%d", digit(i,c));
}
int digit (int a, int b){
while(b>0)
{
int digit = a%10;
a/=10;
b--;
}
return digit;
}
Run Code Online (Sandbox Code Playgroud)
这有什么违法的?
和
return digit;
Run Code Online (Sandbox Code Playgroud)
你返回一个指向函数 digit本身的指针。
该变量的数字是只在循环里地方。
您可能打算将此变量置于循环之外,但是您应该重命名它以免与函数混淆。
也许像
int get_digit(int number, int digit_number)
{
int one_digit = 0;
while(digit_number-- > 0)
{
one_digit = number % 10;
number /= 10;
}
return one_digit;
}
Run Code Online (Sandbox Code Playgroud)
请注意,我已经更改了所有符号的名称,希望当它们的名称描述它们的用途时,它们现在更有意义。