VC++搞不定了,说实参与形参类型不一致是怎么回事?

#include <stdio.h>
int pw[16]={0},sign=1,password;
main()
{
int enc(int x,int y[16]);
int dec(int x,int y[16]);
int i=0,j=0,k=0,m=0,number[500],temp[4],num[16]={0};
。。。。。。
printf("%0x\n",enc(password,num[16]));
。。。。。。
printf("%0x\n",dec(password,num[16]));
。。。。。。
}
int enc(int x,int y[16])
{
。。。。。。
}
int dec(int x,int y[16])
{
。。。。。。
}

定义有问题 而且不安全
这样形参定义为一个数组 编译器会把它认为是一个指针 这样是不安全行为
而你就传了一个整型值进去 ,自然是类型不对
还有传数组进去是不安全性 建议传指针 同时传指定的数组范围,否则容易出现越界行为
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-19
你的函数里面第二个参数是一个int的数组(编译时会转换成指针),而你传入数据的时候传的是num数组中的第十七个元素(数组下表从0开始,[0]才表示的是第一个,[16]表示的是第十七个),从编译上来说传入的是数组中的元素,也就是单个int的变量,而函数参数的要求是一个int的数组(或指针),代码的修改方法一楼已经给出了,但是你的编程习惯还是有问题……
第2个回答  2010-08-18
printf("%0x\n",enc(password,num));
printf("%0x\n",dec(password,num));本回答被提问者采纳