如何从指针转换为 int?

How do I cast from a pointer to an int?

我正在尝试从指针 return 一个 int,但一直收到错误消息 'cast from pointer to integer of different size'。代码部分如下。我认为问题可能是 var_num 调用的函数都是无效的,但理想情况下,如果我可以在不更改所有函数(及其后续函数)的情况下离开,那会容易得多。谢谢!

int var_num(Prog *ptr)
{
   if(!isdigit(ptr->words[ptr->current_line][0])) {
      ptr->current_var = ptr->vars[var_instruction(ptr)];
   }
   else {
      num_instruction(ptr);
   }

   return (int)ptr;
}

我假设 Prog 是某种 structclass。在任何一种情况下,它都是一个比简单变量复杂得多的对象,并且将其转换为不同的类型并不是直截了当的。至少编译器自己做不到,因为它有歧义。

问题是,编译器可以将 float 类型转换为 int,但是如果您不明确地将 class Student 转换为 class Car 则无法完成定义它是如何工作的。

如果 Prog 包含您想要 return 的某种属性(在下面的示例中我将其称为 attribute),这就是您需要做的:

return ptr->attribute;

如果该属性的类型与 int 不同,但属于 primitive 类型,则您可以像这样进行类型转换。

return (int)ptr->attribute;