【问题标题】:Issue with passing a constant pointer as an argument to another function将常量指针作为参数传递给另一个函数的问题
【发布时间】:2023-03-30 05:58:01
【问题描述】:

所以我在编写一些代码时遇到了问题。这段代码的简化版本是这样的:

typedef unsigned int Variable_one;

int original_function(Variable_one *const v1){
   if (validation(v1)) {
      /*body*/
   }
   /* more body */
}

int validation(Variable_one v1) {
   if (v1 == NULL) {
      /* even more body */
   }
}

我知道 Variable_one 是一个无符号整数,但我必须执行的检查是是否将 v1 传递给验证函数是 Null 值。每当我尝试这个时,即使我这样做了

if (validation(*v1))

我仍然得到相同的错误(由于编译器设置),即“指针和整数之间的比较”。至于修改函数签名或Variable_one,由于项目的限制,我不能。

【问题讨论】:

  • 您正在传递一个需要非指针的指针。 Variable_one 是一个可怕的类型名称......
  • 我可以修改每个的主体,包括函数调用。但是,函数签名是不可触碰的。如果我不需要传递指针,我如何通过调用验证函数来验证 v1 是一个合适的值?
  • 就名称而言,我使用它是为了示例。我的代码命名更恰当。

标签: c pointers parameters arguments


【解决方案1】:

您需要将正确的数据类型传递给正确的参数,然后用 * 请求该指针的值

给你;

int validation(Variable_one *const v1) 
{ 
if (*v1 == NULL) { /* even more body */ }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 2019-05-11
    • 1970-01-01
    • 2019-08-17
    • 2018-09-16
    相关资源
    最近更新 更多