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

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

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

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

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

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

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

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

相关搜索:将指向结构类型参数的指针传递给函数时出现C++编译错误将指向字符串的指针作为参数传递给函数时出现类型冲突错误尝试删除指向派生对象的基指针时出现断言错误如何将指向bitset的指针传递给函数参数?尝试访问指针列表中的指针时出现C总线错误,指针列表是指向指针的结构指针如何修复从不兼容的指针类型传递“count”的参数%1如何修复错误:从不兼容的指针类型传递'proc_create‘的参数4尝试存储指向另一个指针变量的指针时出现分段错误如何修复尝试设置头像时出现的此错误?修复尝试将回调示例重写为promise时出现的错误使用指向以unordered_map为成员的类的指针时出现段错误如何修复尝试迁移manage.py时出现的错误尝试重写NamingProxy内的函数时出现错误[构造函数的参数0]如何修复“不兼容的整数到指针的转换传递'bool‘到类型为'bool (*)[9]’‘的参数”?C在将指向数据成员的指针作为非类型模板参数传递时推断类型和类尝试将两个数组指针传递给随机交换它们的函数时出现分段错误如何修复错误“表达式必须具有指向对象的指针类型”(多文件项目)?将类作为函数参数传递时出现C++不完整的类型错误将指向正向声明的类型的指针推入typedef'd向量时出现编译器错误尝试将参数传递给方法时出现“调用隐式删除的复制构造函数”错误
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

TypeScript 系列之函数

TypeScript 当然也支持参数默认值,当调用函数没有提供参数或者以 undefined 调用时,该参数会被置参数默认值。...如果有默认值参数出现在必选参数之前,调用该函数时候需要显式地传递 undefined 才能让参数默认值生效。...为了修复这个错误,需要修改 this 类型: class Handler { info: string; onClickGood(this: void, e: Event) { //...) => { this.info = e.message; }; } 这个例子不会报错是因为箭头函数会保持住创建 this 指向,无论第三方库如何调用,都不会改变 this 指向,因此你可以传递给期望...答案是一个函数提供多个重载函数类型。编译器会按顺序挨个尝试函数重载列表中所有函数类型

1.3K51

连接器工具错误lnk2019_2019年十大语文错误

32位代码,或将32位库链接到64代码 13.将不同编译器选项用于不同源文件中函数内联 14.在其作用域外使用自动变量 15.调用内部函数或将参数类型传递到目标体系结构不支持内部函数 16.混合使用本机代码...15.调用内部函数或将参数类型传递到目标体系结构不支持内部函数 例如,如果您使用 :::no-loc(AVX2)::: 内部函数,但未指定 / :::no-loc(ARCH)::: : :::no-loc...示例 以下是一些导致 LNK2019 错误代码示例,以及关于如何修复错误信息。...以下示例生成 LNK2019,并演示如何修复错误。...声明必须包括与定义相同模板参数。 以下示例在用户定义运算符上生成 LNK2019,并演示如何修复错误

4.1K20
  • 第5章 | 对值引用,使用引用,引用安全

    当通过将值所有权转移给函数方式将这个值传给函数,就可以说按值传递了它。如果改为将值引用传给函数,就可以说按引用传递了它。...5.3 引用安全 正如前面介绍过那样,引用看起来很像 C 或 C++ 中普通指针普通指针是不安全,Rust 又如何保持对引用全面控制呢?或许了解规则最佳方式就是尝试打破规则。...5.3.2 将引用作为函数参数 当我们传递函数引用时,Rust 要如何确保函数能安全地使用它呢?假设我们有一个函数 f,它会接受一个引用并将其存储在全局变量中。...无须查看 g 具体定义,签名本身就可以告诉我们 g 用它参数能做什么,不能做什么。当你尝试函数调用建立安全保障,这一认知会非常有价值。...请注意,虽然 g 有一个生命周期参数 'a,调用 g 并不需要提及它。只要在定义函数类型关心生命周期参数就够了,使用它们,Rust 会为你推断生命周期。

    9510

    C++从入门到精通——this指针

    : Date类中有 Init 与 Print 两个成员函数函数体中没有关于不同对象区分,那当d1调用 Init 函数,该函数如何知道应该设置d1对象,而不是设置d2对象呢?...只不过所有的操作对用户是透明,即用户不需要来传递,编译器自动完成。 二、this指针特性 this指针类型:类类型* const,即成员函数中,不能给this指针赋值。...只能在“成员函数内部使用 this指针本质上是“成员函数形参,当对象调用成员函数,将对象地址作为实参传递给this形参。所以对象中不存储this指针。...当编译报错,通常会提供详细错误信息,其中包含了错误位置和具体原因,开发人员可以根据这些信息来定位和修复错误。 什么时候会出现运行崩溃 运行崩溃是指在程序运行过程中突然停止或无响应情况。...在C++中,this指针指向当前对象地址,如果对象不存在,即为空,this指针也将为空。在访问对象成员函数,需要先判断this指针是否空,以避免访问空指针错误

    1.2K10

    Unsafe 随堂小测题解(一)

    如果有需要,每个订阅者都可以私信我你电子邮件,我也会把 Markdown 文件发送给你。 在知乎发现了几篇非常有意思Unsafe 随堂小测[1],我来尝试解答一下。本文第一篇。...官方给出解释: “健全性是一个类型系统概念,意味着类型系统是正确,即,类型良好程序实际上应该具有该属性。对于 Rust 来说,意味着类型良好程序不会导致未定义行为。...你可以使用NonNull::dangling()获得一个可作为零长度slice数据指针。 data必须指向len连续正确初始化T类型值。...因此就存在一种可能性,传入&T中会包含用于对齐未初始化 padding 字节,在进行cast转换以后,data指针 也许正好会指向哪些padding字节,这个时候就是 UB。...因为 ()是零大小类型(ZST)。顾名思义,零大小类型不能被分配内存。 修复思路就是判断 T是否零大小类型,然后根据具体情况返回合适值即可。

    95020

    一起长锈:4 默认不可变变量绑定与引用(从Java与C++转Rust之旅)

    “ ”尽管这个变量被声明为可变(mut),但在将其传递给 modify_value 函数,我们只传递了一个默认不可变引用(&value),而不是可变引用(&mut value)。...“ “在 modify_value 函数中,x: &i32是函数参数。“ ”其中 &i32 表示 x 是一个指向 i32 类型整数不可变引用。...“ ”在 Rust 中,不可变引用意味着你不能通过这个引用修改它所指向数据。“ ”参数 x 只能被读取,不能被修改。“ “*x += 1;这行代码尝试解引用 x ,并将其值增加 1。...C++允许解引用任何指针,包括空指针,悬空指针,或野指针,可能导致运行时错误,如段错误。C++编译器通常不检查这些错误,它们通常只在运行时出现。 引用默认行为 默认情况下,引用指向数据是不可变。...如果你对Rust是如何用Result类型处理错误有兴趣,或者想看看它和Java和C++处理错误有什么不一样,那就跟着我一起看下去吧! 【未完待续】 如果喜欢我文章,期待你点赞、在看和转发。

    22843

    深入探究C语言中常量指针与野指针概念及其应用

    指针越界访问:当指针超出了它所指向数据结构(如数组)边界,就会发生越界访问。例如,一个指向大小10数组指针,如果尝试访问数组第12个元素,就会造成越界。 3....触发段错误:当野指针指向一个不可访问内存地址尝试对其进行解引用操作可能会导致段错误,这是因为程序试图访问一个非法内存区域。 2....调试困难:野指针存在可能会使得程序调试变得非常困难,因为它们可能在程序任何地方引发错误,而且这些错误可能不会立即显现,增加了查找和修复问题难度。...及时置空:当一个指针不再使用时,或者它所指向内存空间已经被释放,应该将其置NULL,以防止其成为野指针。 3....例如,在函数参数传递一个指向常量指针,这样在函数内部就不能修改这个数据。 野指针:避免使用未初始化指针和已经释放内存地址指针,以减少程序出错风险。

    18910

    谈谈如何利用 valgrind 排查内存错误

    内存块重叠,比如使用 memcpy 函数源地址和目标地址发生重叠。 向内存分配函数 size 参数传递非法值(fishy value),比如,负值。...; } 在 main 函数中定义了一个没有被初始化变量 x,接下来传入 foo 函数,该函数功能是打印传入参数。...也就是说指针已丢失,但是内存未释放,这是真正需要被关注内存泄漏,需要尽快修复。 indirectly lost,指针间接丢失。 当使用了含有指针成员类或结构可能会报这个错误。...这类错误无需直接修复,他们总是与 definitely lost 一起出现,只要修复definitely lost 即可。 possibly lost,指针可能丢失。...因为 p 指针,不指向任何已分配内存块,且没有指向数组非起始地址,所以不会有 still reachable 和 possibly lost 这两种错误

    7K41

    给PHP开发者讲讲PHP源码-第二部分

    在这篇文章中,我们谈论是定位PHP内部函数定义,以及理解它们原理。 如何找到函数定义 作为开始,让我们尝试找出strpos函数定义。...这时候,你需要记住,在C语言里面,数组代表指向它们第一个元素指针。比如说,haystack变量会指向你所传递$haystack字符串变量第一个字符。...你可以看到,它们都是使用引用(&)传递,意味着它们传递不是变量本身,而是指向它们指针。...而且,这个函数使用FAILURE(当你尝试传递无效参数函数时会发生,比如传递一个数组赋值到字符串)来检查。...php_memnstr返回指向needle在haystack第一次出现位置指针(这就是为什么found变量要定义char *,例如,指向字符指针)。

    95180

    C++进阶之路:探索访问限定符、封装与this指针奥秘(类与对象_上篇)

    :如上所述,内存对齐可以提高处理器访问内存效率,并避免在某些硬件平台上出现错误如何让结构体按照指定对齐参数进行对齐?...这个this指针指向调用该成员函数对象地址。 当你创建Date类两个对象d1和d2,并分别调用它们Init函数,编译器会自动将this指针设置指向当前对象(d1或d2)地址。...在C++中,编译器每个非静态成员函数隐式地传递一个名为this指针,该指针指向调用该函数对象。 这使得成员函数能够知道它们应该操作哪个对象数据成员。这个过程对用户是透明。...在 C++ 中,当你有一个指向对象指针,并试图通过该指针调用成员函数,编译器会生成代码来隐式地传递一个指向该对象 this 指针给成员函数。...尽管在源代码中你并不会显式地看到 this 指针传递和使用,编译器会在编译你处理这些细节。 this指针可以为空吗?

    13210

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

    13 合约 包装 C 库出现一个常见问题是保持可靠性和检查错误。事实是,许多 C 程序因不提供错误检查而臭名昭著。...尽管可以编写接受特殊类型 va_list 函数这是完全不同。您不能采用 va_list 结构并将其代替可变长度参数传递给另一个可变参数函数。它只是不起作用。...通常,传递参数数量直到运行时才会知道。更糟糕是,直到运行时您才会知道参数类型和大小。不用说,没有明显方法可以让 C 编译器涉及未知数量未知类型参数函数调用生成代码。...14.3 默认可变参数支持 当可变长度参数出现在接口中,默认行为是完全删除可变参数列表,用单个 NULL 指针替换它们。...给定一个全局变量: C++ %module example %immutable; extern double Foo; %mutable; SWIG 将允许读取 Foo 当进行设置尝试,将调用错误函数

    5.3K40

    一名Java开发Rust学习笔记

    指针:C++在访问内存地址不会先做校验,如果尝试访问一个内存地址,但是这块内存已经被释放了。就会出错。...野指针指针指向位置是不可知(随机、不正确、没有明确限制指针变量在定义如果未初始化,其值是随机,访问就会出错。 悬空指针:内存空间在被释放了之后,继续使用。...如果只有&型借用指针,那么能同时存在多个;如果存在&mut型借用指针,那么只能存在一个;如果同时有其他&或者&mut型借用指针存在,那么会出现编译错误。...在大多数时候,生命周期都是隐式且可以被推导出来,就如同大部分时候类型也是可以被推导一样。当出现了多个可能类型,我们就必须手动声明类型。...但凡在线程之间传递所有权会发生安全问题类型,都无法在这个参数出现,否则就是编译错误。 我们可以看到,上述函数就是一个普通函数,编译器没有对它做任何特殊处理。

    21810

    一篇读懂 C 指针

    同时,在函数形参声明中,声明数组都会被改写指向数组初始元素指针。这两个规则完美的契合,让我们在把数组作为实参传递函数,实际上传递是数组首元素指针副本,符合了函数形参声明。...假设我们需要返回数据类型 T ,则参数类型 T *,即"指向 T 指针"。...当数组作为参数传递函数,默认传递就是指向数组指针,所以在函数内部通过指针修改和调用方是同一个数组。...# 多维数组作为参数传递 正如前面介绍那样,当数组被用作函数形参,数组声明会自动被解释指针声明。...# 通过参数返回指针 前面介绍过,如果想通过参数返回类型 T,则参数类型 T *,即“指向 T 指针”。

    11510

    50个常见 Java 错误及避免方法(第一部分)

    在开发Java软件可能会遇到许多类型错误大多数是可以避免。为此我们罗列了50个最常见Java编码错误,其中包含代码示例和教程,以帮助大家解决常见编码问题。...“Incompatible Types” “Incompatible Types”是指定语句尝试将变量与类型表达式配对时发生逻辑错误。 通常会在代码尝试将文本字符串放入到整型中出现,反之亦然。...这并非Java语法错误。(@StackOverflow) ? 当编译器给出“Incompatible Types”消息,就不是简单修复可以摆平了: 有可以转换类型函数。...“Possible Loss of Precision”错误通常发生在: 尝试整数数据类型变量分配一个实数。 尝试整数数据类型变量分配一个double。...“Operator … Cannot be Applied to ” 当操作符用于非定义中类型,就会出现此问题。 ? 当Java代码尝试在计算中使用类型字符串,通常会发生这种情况。

    2.1K30

    【C语言进阶】C语言指针进阶实战:优化与难题解析

    pfun1先和*结合,说明pfun1是指针指针指向是一个函数指向函数参数,返回值类型void 我们再来看一下这两个代码 //代码1 (*(void (*)())0)(); //代码2 void...首先,(void (*)())0是一个类型转换,它将整数0转换为指向返回类型void且不接受任何参数函数指针。然后,*操作符对转换后指针进行解引用,尝试获取该函数指针指向函数。...第二个参数是一个指向函数指针,这个函数接受一个int参数(通常是信号编号)并返回void。 signal函数返回类型是一个指向函数指针,这个函数也接受一个int参数并返回void 2....回调函数 回调函数就是一个通过函数指针调用函数。如果你把函数指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向函数,我们就说这是回调函数。...回调函数不是由该函数实现方直接调用,而是在特定事件或条件发生由另外一方调用,用于对该事件或条件进行响应 // 定义一个回调函数类型,该函数接受一个int参数并返回void typedef

    9910

    【Rust学习】05_引用与借用

    下面是如何定义并使用一个(新)calculate_length 函数,它以一个对象引用作为参数而不是获取值所有权: fn main() { let s1 = String::from("hello...因为它不拥有它,所以当引用停止使用时,它指向值不会被删除。 同样,函数签名用 & 来表明参数 s 类型是引用。...但因为它并不拥有引用值所有权, // 所以什么也不会发生 变量 s 有效作用域与任何函数参数作用域相同,但是当停止使用 s ,引用指向值不会被删除,因为它没有 s 所有权。...当函数将引用作为参数而不是实际值,我们不需要返回值来归还所有权,因为我们从未拥有所有权。 我们将创建一个引用行为称为 借用(borrowing)。...悬垂引用 在具有指针语言中,很容易通过释放内存保留指向指针错误地生成一个 悬垂指针(dangling pointer),所谓悬垂指针是其指向内存可能已经被分配给其它持有者。

    13810

    c++基础之函数

    它与全局变量生命周期相同,只是它变量名被限定在了函数内部(关于什么时候它分配内存,什么时候销毁详细内容,也可以参考鄙人曾今写过关于static汇编分析) 参数传递 参数传递主要有值传递指针传递和引用传递...定义指向数组指针采用是int (*p)[10]; 方式,同样定义返回数组指针函数,只需要把p定义函数形式即可:int (*func(int i))[10];。...main函数作为入口函数,只能有一个 顶层const不影响传入参数,因此认为顶层const与普通形参相同,不认为是重载 如果传入参数是引用或者指针,可以根据它所指向对象是否const来进行区分,...函数指针 声明函数指针,只需要将函数声明中函数名写指针名即可,但是需要注意使用括号将表示指针*与指针名称括起来 void (*f)(int); 当我们把函数名直接作为一个值使用时,该函数自动转化为指针...指向不同类型函数指针不存在类型转化 重载函数指针必须与某个函数精确匹配,不存在形参类型转化之类规则 可以使用typedef来函数指针类型定义一个类型别名 typedef void(*f)(int

    57230

    【重拾C语言】五、模块化程序设计——函数(定义、调用、参数传递、结果返回、函数原型;典例:打印字符图形、验证哥德巴赫猜想)

    前言 本文介绍了模块化程序设计——函数,其中包括如何定义函数函数调用形式和过程、参数传递(值传递指针传递)、函数结果返回以及函数原型使用。...执行完函数体中语句后,返回到函数调用下一条语句,继续执行。 b. 参数传递 在C语言中,函数参数可以通过值传递传递参数副本)或指针传递传递参数地址)方式进行传递。...值传递 当使用值传递方式传递参数函数内部对参数修改不会影响到函数外部变量。即函数内部操作参数副本。...指针传递 当使用指针传递方式传递参数函数内部可以通过指针来访问和修改函数外部变量。通过传递变量地址,函数可以直接对原始变量进行操作。 (关于指针相关知识详见后文) c....追踪错误:对于运行时错误,可以使用追踪技术来定位错误发生位置。可以通过观察错误信息、栈跟踪和日志等来追踪错误来源,进而修复问题。

    27210

    第6章 函数

    int a = fun(i, ++i); // 错误传递进来实参不能对其它实参有副作用! 函数返回类型不能是数组或函数类型,但可以是指向数组或函数指针。...包括引用传递和值传递,其中指针参数也是值传递,进行指针拷贝。拷贝之后,两个指针是不同指针,只是它们都指向都一个对象。...数组不允许拷贝,所以无法以值传递形式传递数组参数;使用数组通常会将其转换成指针,所以当函数传递一个数组参数,实际传递指向数组首元素指针。数组大小对函数调用没有影响。...基于这个原因,内联函数和 constexpr函数通常定义在头文件中。也因为它们可以多次定义,所以即使定义在头文件中,链接也不会出现多次定义错误,而普通函数这样做就会出错。...bool b1 = pf(1, 2); 等价于 bool b2 = (*pf)(1, 2); 不能定义函数类型形参,形参可以是指向函数指针

    1.3K70
    领券