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

如题所述

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

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

扩展资料:

C语言函数的实参与形参

1、实际参数(实参)

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

2、形式参数(形参)

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

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-05-23
不能将指向指针的指针当成指针;
你一定是有个地方是
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;

意思就是:一个指针的地址就是指向指针的指针

本回答被网友采纳
第2个回答  2014-12-05
数据类型里,地址和变量之间是不能强制转换的,因为数据根本不在同一个物理层面上。
你的情况也类似,指向指针的指针,不能强制转换为指针,因为他们不在同一个半导体存储的物理层面上。
第3个回答  2014-12-05
编译器不能将一个类型为int**的值自动转换为int*的值追问

请问
int *p;
p=&p;
为什么指针变量不能用来存储自身的指针呢?

追答

这与指针变量使用时的解引用有关。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网