提问了..C++

来源:百度知道 编辑:UC知道 时间:2024/05/30 06:57:30
这个是个把输入的16进制转化成为10进制数输出的程序..有一个错误..不知道为什么了..

Cpp1.cpp(15) : error C2664: 'change' : cannot convert parameter 1 from 'char' to 'char []'

程序是这样的

#include<iostream.h>
#include<stdio.h>

long change(char de[]);
int main()
{
char d[10],c;
int i=0;
long num;
while(c=getchar()!='\n'){
if((c>=0&&c<=9)||(c>='a'&&c<='f')||(c>='A'&&c<='F')){
d[i]=c;i++;}
if(i==9)break;}
d[9]='\0';
num=change(d[10]);
cout<<num<<endl;
return 0;
}

long change(char de[])
{
char c;
int i;
long dec=0;
for(i=0;(c=de[i])!='\0';i++){
if(c>='0'&&c<='9')dec=dec*16+c-'0';
else if(c>='a'&&c<='f')dec=dec*16+c-'a'+10;
else if(c>='A&

你这句声明long change(char de[]);中的参数是一个char数组,而你下面调用change函数所传递的实参是一个字符,应该把d传递给change
正解

你这句声明long change(char de[]);中的参数是一个char数组,而你下面调用change函数所传递的实参是一个字符,应该把d传递给change

把main函数中的if((c>=0&&c<=9)||(c>='a'&&c<='f')||(c>='A'&&c<='F')){
改成if((c>='0'&&c<='9')||(c>='a'&&c<='f')||(c>='A'&&c<='F')){

改成这样num=change(d);

不能把字符传给字符串名(地址)
也不能字符串名(地址)传给字符
weibfla - 见习魔法师 二级 4-1 18:52 说得没有错

num=change(d[10]);
改为num=change(d);
这里需要的参数是数组地址,而你的d[10]是这个数组的第10个元素。