我有一个包含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)'
那么,如何摆脱这个错误?
答案 0 :(得分:3)
C-String - 你有一个数组 - 实际上只是一个字符数组,您可以将其视为char c[]
或char *c
。由于您有一个数组的c字符串,因此您的参数必须为char **c
或char *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);