简单的问题为什么会错误?

polywh 2005-10-25 04:53:14

void main()
{
int data[] = {5,3};

int t=trans(data,data+1);
}

int trans(int* a,int* b)
{

if (*a>=*b)
return *a;

return *b;
}

为什么t=trans(data,data+1)会报错啊?
...全文
74 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
polywh 2005-10-25
  • 打赏
  • 举报
回复
试了ddmor(小明) 的

在VC下还是不行啊,到底什么原因???
polywh 2005-10-25
  • 打赏
  • 举报
回复
不管是用int data[] = {5,3}; 还是int data[2]={5,3};都出现

error C2664: 'trans' : cannot convert parameter 1 from 'int [2]' to 'int'

这个错误,到底哪里错误了?指点一下啊
ddmor 2005-10-25
  • 打赏
  • 举报
回复
编译器的问题,把data指针当成数组data[2]
用以下代码就可以看出其不同之处
cout<<sizeof(data)<<endl;//8
cout<<sizeof((int*)data)<<endl;//4
原码最好这样写:
int trans(int* a,int* b)
{

if (*a>=*b)
return *a;

return *b;
}

void main()
{
int data[] = {5,3};
int *pData=data;
int t=trans(pData,data+1);
//或者
int t=trans((int*)data,data+1);
}
bm1408 2005-10-25
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;

int trans(int *,int *b);
void main()
{
int data[] = {5,3};

int t=trans(data,data+1);
cout<<t<<endl;
}

int trans(int* a,int* b)
{

if (*a>=*b)
return *a;

return *b;
}

我想在VC下应该没有问题,我经常这么用过~
实在不行,试试
int data[] = {5,3};
数组在当作函数参数时,会退化为一人指针,
int data[2]={5,3};
polywh 2005-10-25
  • 打赏
  • 举报
回复
声明当然有,没有贴上去啊

error C2664: 'trans' : cannot convert parameter 1 from 'int [2]' to 'int'

是为何?

i_noname 2005-10-25
  • 打赏
  • 举报
回复
要先给个声名,或者把trans的定义放在main的前面
int trans(int* a,int* b);
void main()
{
int data[] = {5,3};
int t=trans(data,data+1);
}
int trans(int* a,int* b)
{
if (*a>=*b)
return *a;
return *b;
}

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧