C语言编程出现这个错误了cannot convert from 'int ** ' to 'int *'请问是什么意思啊

 我来答
计算机科普DD
高粉答主

2020-04-03 · 专注于ICT/互联网行业
计算机科普DD
采纳数:3 获赞数:8503

向TA提问 私信TA
展开全部

代码在编译时会出现  error C2664: 'InsertSort' : cannot convert parameter 1 from 'int' to 'int []'

这是因为用数组名做函数实参时,向形参(数组名或指针变量)传递的是数组首元素地址,因此对参数的类型做一下改变,如下图所示:

扩展资料:

C语言函数的实参与形参

1、实际参数(实参)

真实传给函数的参数,叫实参。实参可以是:常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,它们必须有确定的值,以便把这些值传送给形参。

2、形式参数(形参)

形式参数是指函数名后括号中的变量。因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。

参考资料来源:百度百科--实际参数

凌雨殁
推荐于2017-05-23 · TA获得超过110个赞
知道答主
回答量:27
采纳率:0%
帮助的人:30.7万
展开全部
不能将指向指针的指针当成指针;
你一定是有个地方是
int **a;
函数func(int *p)
你却调用func(a);这样就是将int** 转换为int *,但是严格的编译器就认为这是错的
追问
我的代码是这样滴
#include
int main()
{
int *p;

p=&p;
}
没有两个*哦
追答
这样也不对。
你先声明的指向int的指针p是空,然后这个指针应该指向一个int的内存,但是你赋值却是指针的地址(指针的指针);;

你看一下这段代码:

int *p;
int a= 1;
p = &a;
int **pp = &p;

printf("--- %d\n",**pp);
输出是 1;

意思就是:一个指针的地址就是指向指针的指针
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
霍工clody
2014-12-05 · TA获得超过7073个赞
知道小有建树答主
回答量:1291
采纳率:80%
帮助的人:230万
展开全部
数据类型里,地址和变量之间是不能强制转换的,因为数据根本不在同一个物理层面上。
你的情况也类似,指向指针的指针,不能强制转换为指针,因为他们不在同一个半导体存储的物理层面上。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-12-05
展开全部
编译器不能将一个类型为int**的值自动转换为int*的值
追问
请问
int *p;
p=&p;
为什么指针变量不能用来存储自身的指针呢?
追答
这与指针变量使用时的解引用有关。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式