如何传递一个字符数组到一个函数。
声明
char fromName[64];
char fromStreet[64];
char fromSuburb[64];
char fromCountry[64];
函数调用
Trans[i]->putAddress(fromName, fromStreet, fromSuburb, fromCountry);
原型
void putAddress(char,char,char,char);
function
void putAddress(char fName,char fStreet,char fSuburb,char fCountry){
return;
}
和错误 “的main.cpp”,线86:错误:在呼叫到邮件:: putAddress(炭,焦炭,炭,炭)char类型的形式参数1被传递的char *。
Answer 1:
你的功能应该是:
void putAddress(char *,char *,char *,char *);
Answer 2:
你需要传递的指针为char
void putAddress(char* fName,char* fStreet,char* fSuburb,char* fCountry);
那么你需要让你不索引关底,你的情况他们都是64要小心,你知道每个数组的大小。
Answer 3:
您可以通过两种方式传递数组:
(1)传统的C形式:
在这里,你传地址,并使用指针接收
void putAddress(char *,char *,char *,char *);
(2)C ++通过引用传递:
你通过用尺寸规格参考传递数组:
void putAddress(char (&a1)[64], char (&a2)[64],char (&a3)[64], char (&a4)[64]);
这可以帮助你获得数组大小的直线距离正确(指针是不允许的)。 这可以使用更加复杂的template
也。
你也可以使用重复的选项std::string
,这将使整个阵列的副本,并将其作为管理的自动变量。
Answer 4:
void putAddress(char* array){
//use array as usual
}
Answer 5:
传递字符串(字符数组),其为指向数组的第一个字符:
void something(char *str) { /* ... */ }
int main(int argc, char **argv) {
char somestring[] = "Hell World!\n";
something(somestring);
return 0;
}
因为数组传递给函数时自动衰减到指针所有你需要做的就是通过字符数组和它的作品。 因此,在你的例子:
void putAddress(char*, char*, char*, char*);
Answer 6:
编译器告诉你就在那里......它传递的char*
。 所以请使用char*
或char ar[]
Answer 7:
要纠正你的代码:
void putAddress(char*,char*,char*,char*);
但它仍然是错误的。 数组衰变为指针,这就是为什么它会编译,但会导致一个错误,如果该参数是不是空终止。 你也应该传递的大小,如果你选择这种方式。
然而 ,由于这是C ++而不是C,我建议你使用std::string
来代替:
void putAddress(const std::string&,const std::string&,const std::string&,const std::string&);
Answer 8:
编译器的错误使得SENCE作为FROMNAME确实是一个指针阵列FROMNAME(的第一个元素)。 这仅仅是C ++(和滑动C)的语法。
为了传递一个字符数组,你应该做的现在你在做什么,这是一个函数,传递一个指针数组(的第一个元素)。
因此,所有你需要做的是改变
void putAddress(char,char,char,char);
至
void putAddress(char *, char *, char *, char *);
PS:你的下一个问题是要知道(使putAddress知道的)每个数组的长度。 如果这些虽然固定的,你有没有问题。
Answer 9:
void putAddress(char[],char[],char[],char[]);
function
void putAddress(char fName[],char fStreet[],char fSuburb[],char fCountry[]){
return;
}
你忘了把paranthesis,把他们在上面的代码。
文章来源: Passing char array into a function