【问题标题】:Passing two dimensional array of strings to function?将二维字符串数组传递给函数?
【发布时间】:2015-05-27 07:56:17
【问题描述】:

我正在尝试将此数组发送到函数sortByLength

函数原型是

sortByLength(char *words[],int * lengths, const int size);

这是我尝试将其传递给函数的其余代码:

#include <stdio.h>
#include "task2.h"
#define SIZE 3

int main(void)
{
    int i;
    int lengths[SIZE] = {3, 4, 6};
    char words[][20] = {"Sun", "Rain", "Cloudy"};

    sortByLength(words[][20],lengths,SIZE);

    return 0;
}

【问题讨论】:

  • 你有什么问题?
  • 为什么不 sortByLength(words, lengths, SIZE);
  • @kiks73 这行不通。因为他将其声明为二维数组。但他把它当作指针的指针。
  • @Karthikeyan.R.S;它不是指针数组,而是指向指针的指针。
  • @hacks so 'char words[][20]' 是指向指向第一个元素“Sun”的指针的指针?

标签: c string function multidimensional-array


【解决方案1】:

原型

sortByLength(char *words[],int * lengths, const int size);  

等价于

sortByLength(char **words,int * lengths, const int size);  

words[][20] 将在传递给函数时转换为指向20 数组chars 的指针。 char **char (*)[20] 是不兼容的类型。将函数原型更改为

sortByLength(char (*words)[20], int *lengths, const int size); 

【讨论】:

  • 或使用sortByLength(words,lengths,SIZE); 代替sortByLength(words[][20] ,lengths,SIZE);
猜你喜欢
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
  • 1970-01-01
  • 2018-03-12
  • 2021-05-27
  • 2023-03-06
  • 2020-11-01
相关资源
最近更新 更多