【问题标题】:Passing multi-dimensional array to function in c?将多维数组传递给c中的函数?
【发布时间】:2011-09-27 17:32:30
【问题描述】:

我有一个这样声明的字符串数组:

char parts[PART_COUNT][PART_MAX];

然后我创建了一个函数,它接受一个字符串和一个字符串数组并将其拆分为这些部分,声明如下:

WORD PartString(const char *str, char **parts, char sep);

我似乎可以阅读parts[i][j],但如果我尝试这样分配:

parts[i][j] = str[x];

我收到此错误:

remote.exe 中 0x012614d8 处未处理的异常:0xC0000005:访问冲突写入位置 0xcccccccc。

谁能告诉我用 C 语言做到这一点的方法?谢谢。

【问题讨论】:

  • char parts[M][N]char **parts 不一样;如果你为了让编译器停止抱怨而执行了强制转换,那么这就是你的问题的原因。
  • 编译器没有抱怨,我只是作为 PartString(buffer, parts, '.');
  • 这肯定会导致编译器警告或错误消息。
  • 您迫切需要处理编译器损坏的事实。

标签: c arrays function multidimensional-array


【解决方案1】:
#define PART_MAX      1024
#define PART_COUNT    4

好的,设法修复它,我关闭了编译器警告,当我重新打开它们时,我得到了这个:

'char **' differs in levels of indirection from 'char [4][1024]'

这是允许我修改数组中的字符串的新声明:

WORD PartString(const char *str, char (*parts)[PART_MAX], char sep)

那么我只是传递:

PartString(buffer, parts, '.');

【讨论】:

    猜你喜欢
    • 2014-01-15
    • 1970-01-01
    • 2014-11-19
    • 2014-03-16
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    相关资源
    最近更新 更多