gpt4 book ai didi

在c中将指针强制转换为int

转载 作者:行者123 更新时间:2023-11-30 16:46:32 24 4
gpt4 key购买 nike

为了学习,我必须学习它。他们有什么方法可以将指针强制转换为整数吗?我必须给 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);
}

最佳答案

首先我可以在 sizeof(&n1); 处看到一个错误当然n1是一个指针。他的Value是一个RAM地址。但要查看他的 Deferenced 值,必须在 n1 之前使用 *& 用于获取某物的地址。 * 用于获取指针的内部。

使用:sizeof(*n1);

第二,我看到你在myEulerForward1的原型(prototype)中得到了一个指针

double myEulerForward1(int *n1)

这是你的编译错误。他说你的函数需要一个指针(一个地址),并且你把除此之外的所有内容都放在其中。

所以当你调用这个函数时,你必须放入一个指针(一个RAM地址)。为此,在调用函数时,您必须使用 & 当然来获取 n1 的地址而不是他的数值。

使用:doubleforward = myEulerForward1(&k);

关于在c中将指针强制转换为int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43689694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com