【发布时间】:2015-04-22 23:56:48
【问题描述】:
我想按字母顺序排序字符串数组,它是 c 中的字符数组数组。这是我的函数的主体:-
char (*)[6] sort_strings ( char (*sptr) [6])
{
//code.
//return a pointer of type char (*)[6].
}
但是编译器无法识别这种类型的返回类型。它给出的错误是:-
预期的标识符或 '(' 之前的 ')' 标记
那么我如何返回一个 char (*)[6] 类型的指针呢?我心里还有个问题,先看main()如下:-
int main(){
char names[5][6] = {
"tom",
"joe",
"adam"
};
char (*result)[6] = sort_strings (names);
//code for printing the result goes here.
return 0;
}
所以我的下一个问题是,当我调用 sort strings (names) 时,编译器也会给我警告:-
初始化使指针从整数而不进行强制转换
所以我的问题是:-
1.如何从函数中返回char(*)[6]?
2.为什么当我调用这个函数时编译器给我警告?
我正在 Windows 上的代码块上运行此代码。
【问题讨论】:
-
@Transcendental 是否等同于 char(/*)[6]。我认为这个符号最终会衰减为 char(/*)[6],我在写吗?
-
请注意,
char (*)[6]不是指向字符串数组的指针。 -
@Rouftantical 我不太确定,但你为什么不把数组传递给函数,然后在里面排序。真的没有必要返回二维字符数组,除非你想要那样。
-
@immibis 但它是一个指向 6 个字符数组的指针。
-
immibis 击败了我,但在测试时我注意到名称
clarke实际上需要 7 个字符,而不是 6 个字符,因为 NUL 终止符。
标签: c arrays function pointers multidimensional-array