将char*数组传递给函数

Passing char* array to function

本文关键字:函数 数组 char      更新时间:2023-10-16

我有一个包含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)'

那么,如何消除这个错误呢?

C-String——你有一个数组——实际上只是一个字符数组,你可以把它看作char c[]char *c。由于您有一个c-string的数组,您的参数将必须是char **cchar *c[],因此您的函数将是:

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

由于传入的是字符串数组(char[]),所以应该是

void sort_array(char** arr, int n)

你的函数必须接受char **arr作为参数。

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

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

首先将数组定义为

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

,因为它是一个指向字符串字面值(字符串字面值的第一个字符)的指针数组。不能更改字符串字面值。

不要犯错误,你可以用下面的方法定义函数

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

在这种情况下,你可以称它为

sort_array(c, 4);