首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何修复尝试传递指向函数的指针时出现的“expected*但参数类型为**”错误

这个错误通常是由于函数参数类型不匹配导致的。在修复这个错误之前,我们需要了解一下指针和函数参数的概念。

指针是一个变量,它存储了一个内存地址。通过指针,我们可以访问和修改内存中的数据。函数参数是在函数定义中声明的变量,用于接收函数调用时传递的值。

当我们尝试传递指向函数的指针时,我们需要确保指针的类型与函数参数的类型匹配。如果类型不匹配,编译器会报错并提示"expected * but argument is **"错误。

修复这个错误的方法取决于具体的情况。以下是一些常见的修复方法:

  1. 检查函数定义和函数调用之间的参数类型是否匹配。确保传递给函数的指针类型与函数参数的指针类型一致。
  2. 如果函数参数是一个指向指针的指针(*),而你尝试传递一个指向指针的单层指针(),那么你需要使用取地址运算符(&)来传递指针的地址。例如,如果函数定义为void foo(int** ptr),而你尝试传递一个指向int的指针int* p,你应该调用函数时使用foo(&p)
  3. 确保函数定义和函数声明之间的参数类型一致。如果函数在其他地方声明并定义,确保声明和定义中的参数类型一致。
  4. 检查函数定义和函数调用之间的函数签名是否匹配。函数签名包括函数名和参数列表。如果函数签名不匹配,编译器会报错。

总之,修复"expected * but argument is **"错误的关键是确保函数参数类型与传递给函数的指针类型匹配。根据具体的情况,你可能需要检查函数定义、函数声明、函数调用之间的参数类型和函数签名。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • SWIG 官方文档第三部分 - 机翻中文人肉修正

    很有可能,您正在阅读本章是出于以下两个原因之一;您要么想自定义 SWIG 的行为,要么无意中听到有人嘟囔着一些关于“typemaps”的难以理解的胡言乱语,然后问自己“typemaps,那些是什么?” 也就是说,让我们先做一个简短的免责声明,即“Typemaps”是一种高级自定义功能,可以直接访问 SWIG 的低级代码生成器。不仅如此,它们还是 SWIG C++ 类型系统(它自己的一个重要主题)的组成部分。typemaps 通常不是使用 SWIG 的必需部分。因此,如果您已经找到了进入本章的方法,并且对 SWIG 默认情况下已经做了什么只有一个模糊的概念,那么您可能需要重新阅读前面的章节。

    03
    领券