将char数组传递给函数

Dan*_*ore 10 c++ arrays function char

如何将char数组传递给函数.

声明

char fromName[64];
char fromStreet[64];
char fromSuburb[64];
char fromCountry[64];
Run Code Online (Sandbox Code Playgroud)

功能调用

    Trans[i]->putAddress(fromName, fromStreet, fromSuburb, fromCountry);
Run Code Online (Sandbox Code Playgroud)

原型

void putAddress(char,char,char,char);

function    
void putAddress(char fName,char fStreet,char fSuburb,char fCountry){

        return;
}
Run Code Online (Sandbox Code Playgroud)

和错误"main.cpp",第86行:错误:调用Mail :: putAddress(char,char,char,char)时类型为char的形式参数1正在传递char*.

Cra*_*lus 9

你的功能应该是:

void putAddress(char *,char *,char *,char *);
Run Code Online (Sandbox Code Playgroud)


EdC*_*ica 9

您需要将指针传递给char

void putAddress(char* fName,char* fStreet,char* fSuburb,char* fCountry);
Run Code Online (Sandbox Code Playgroud)

然后你需要小心你知道每个数组的大小,这样你就不会在结尾处编制索引,在你的情况下它们都是64.


orl*_*rlp 5

您将字符串(字符数组)作为指向数组第一个字符的指针传递:

void something(char *str) { /* ... */ }

int main(int argc, char **argv) {
    char somestring[] = "Hell World!\n";

    something(somestring);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

因为数组在传递给函数时会自动衰减为指针,所以您所要做的就是传递字符数组,它就可以工作了。所以在你的例子中:

void putAddress(char*, char*, char*, char*);
Run Code Online (Sandbox Code Playgroud)


iam*_*ind 5

您可以通过两种方式传递数组:

(1)传统的C风格:
在这里你通过地址传递并使用指针接收

void putAddress(char *,char *,char *,char *);
Run Code Online (Sandbox Code Playgroud)

(2)C++按引用传递:
您通过引用传递数组,其大小规格如下:

 void putAddress(char (&a1)[64], char (&a2)[64],char (&a3)[64], char (&a4)[64]);
Run Code Online (Sandbox Code Playgroud)

这有助于您直接确定数组大小(不允许指针).这也可以使用更复杂template.

您还可以迭代使用选项std::string,它将复制整个数组并将其作为自动变量进行管理.