我住你家隔壁姓王 2023-03-01 12:26 采纳率: 100%
浏览 42
已结题

C语言中如果函数需要一个地址,结果少打了&符号,导致实参是一个整数,请问发生了什么导致函数进不去?

C语言中如果函数需要一个地址,结果少打了&符号,导致实参是一个整数,请问发生了什么导致函数进不去?

//函数定义:
void function(int *j)
{...}

//函数的实际调用:
int main{
  ...
  function(i);
  ...
}
  • 写回答

5条回答 默认 最新

  • 社区专家-Monster-XH 2023-03-01 12:29
    关注

    基于Monster 组和GPT的调写:
    在调用方法时,找不到方法名为function,参数类型为int的方法、

    • 在C语言中,函数的参数传递方式有两种:传值调用和传址调用。传值调用是指函数调用时将实参的值复制一份传递给形参,而传址调用是指将实参的地址传递给形参,函数通过地址可以访问实参的值。
    • 在代码中,函数function需要一个指针类型的参数,即一个地址,但是在调用function函数时,实参i是一个整数类型的变量。如果没有使用&符号获取i的地址,那么在函数调用时,实参i的值会被复制一份传递给形参j,而不是实参的地址,因为缺少&符号。这就导致了函数参数的类型与实参类型不匹配。
    • 由于参数类型不匹配,编译器会发出警告,并且在运行时可能会导致程序崩溃或出现其他错误。当函数试图访问传递进来的参数指针所指向的内存时,由于参数类型不匹配,就会出现错误。例如,如果函数function试图向其参数指针所指向的地址写入数据,就会导致未定义行为,因为参数指针实际上指向的是一个整数,而不是一个内存地址。
    • 因此,在调用函数时,应该确保传递给函数的参数类型与函数参数类型匹配,如果函数需要一个指针类型的参数,则应该使用&符号来获取参数的地址。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 3月9日
  • 已采纳回答 3月1日
  • 赞助了问题酬金20元 3月1日
  • 创建了问题 3月1日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效