【发布时间】:2017-04-28 22:27:40
【问题描述】:
为了我的学习,我必须学习它。他们有什么方法可以将指针转换为整数。我必须给 myEulerForward1 一个指针作为参数,我总是收到这个错误消息:
eulerZahl.c: In function ‘main’:
eulerZahl.c:38:35: warning: passing argument 1 of ‘myEulerForward1’ makes pointer from integer without a cast [-Wint-conversion]
double forward = myEulerForward1(k);
^
eulerZahl.c:16:8: note: expected ‘int *’ but argument is of type ‘int’
double myEulerForward1(int *n1){
^~~~~~~~~~~~~~~
有人可以帮我吗?
#include <stdio.h>
#include <stdint.h>
double kFactorial(int k){
if(k <= 1){
return 1;
}
return k * kFactorial(k - 1);
}
double myEulerForward1(int *n1){
double n = 1;
double euler, nFact = 1;
for(int i = sizeof(&n1); i >= 0; i--){
nFact*= i;
euler = euler + (1.0/nFact);
}
return euler;
}
int main(){
int k = 4;
double factorial = kFactorial(k);
printf("The factorial of %d is: %lf ", k, factorial);
double forward = myEulerForward1(k);
printf("The Eulers Number: %lf", forward);
}
【问题讨论】:
-
您正在尝试将一个整数传递给需要指针的位置。尝试双进 = myEulerForward1(&k);或将 double myEulerForward1(int *n1){ 更改为 double myEulerForward1(int n1){
-
for(int i = sizeof(&n1); i >= 0; i--)??询问指针的大小。 -
在同一函数中
double euler在euler = euler + (1.0/nFact);行中未初始化。请启用并修复所有编译器警告。 -
谢谢老兄,我错过了&。
-
好的,现在我修复了所有编译器警告,我得到了 inf 作为我的欧拉数