将char *数组传递给函数

时间:2014-08-04 21:57:36

标签: c++ arrays sorting

我有一个包含4个名字的char数组。

char* c[8] = {"Dave", "Alex", "John", "Andrew"};
sort_array(c, 4);

我需要按字母顺序对这些名称进行排序。我试图在这样的函数中接收这个数组:

void sort_array(char* arr, int n) {
    ...codehere...
}

但是我收到以下错误:

cannot convert 'char**' to 'char*' for argument '1' to 'void
sort_array(char*, int)'

那么,如何摆脱这个错误?

4 个答案:

答案 0 :(得分:3)

C-String - 你有一个数组 - 实际上只是一个字符数组,您可以将其视为char c[]char *c。由于您有一个数组的c字符串,因此您的参数必须为char **cchar *c[],因此您的函数将是:

void sort_array(char* arr[], int n) {
   //...codehere...
}

答案 1 :(得分:1)

由于你传入一个字符串数组(char []),它应该是

void sort_array(char** arr, int n)

答案 2 :(得分:0)

您的函数必须将char **arr作为参数。

void sort_array(char **arr, int n) {
...codehere...
}

为什么呢?因为,char *只是一个字符串(指向它的第一个字符的指针)。如果要将int数组传递给函数,可以使用int *arg参数。如果您需要字符串数组,请使用char **arg

答案 3 :(得分:0)

首先,数组应定义为

const char * c[8] = {"Dave", "Alex", "John", "Andrew"};

因为它是一个指向字符串文字的指针数组(字符串文字的第一个字符)。字符串文字可能不会改变。

不会像你那样犯错,你可以用以下方式定义函数

void sort_array( const char* arr[], int n );

在这种情况下,您可以将其称为

sort_array(c, 4);