【问题标题】:assigning a string to a complex pointer将字符串分配给复杂指针
【发布时间】:2012-01-22 16:19:40
【问题描述】:

我正在尝试将字符串分配给这样定义的数组

char *(*attributes)[][2]; 由我正在使用的库定义。

我希望能够将字符串放入attributes[i][0]

我想我只是对指针感到困惑,我收到错误说无效使用未指定边界的数组。

属性数组存储在名为 info 的结构中。

我尝试以以下方式访问它:

*(info->attributes)[i][0] = newAttributeName 这对我来说很有意义,但正如我所说,它不起作用。

任何帮助将不胜感激!

【问题讨论】:

  • 这是一个函数指针,或者是一个函数指针数组。
  • 从描述来看,我不确定那是对的。它被描述为一组属性。第一个索引用于属性编号(从 1 到存在的许多属性)。第二个是关于属性的两条信息。它的名称在 [0] 中,它的值在 [1] 中。两者都是字符串。所以我试图,例如,将属性的名称放在 [0][0]
  • 有趣。 cdecl.org 说“将属性声明为指向 char 指针的数组 2 的数组的指针”。所以我错了。但是,我不知道如何使用这样的野兽。

标签: string pointers struct


【解决方案1】:

由于没有其他人提供,我建议:

char *attributesa[][2] = *attributes;
char *attributesb[2] = attributesa[0];
attributesb[0] = "Horsefeathers";

然后想办法把它变成一个语句。

【讨论】:

  • 谢谢,这实际上是一个我没想到的好主意。我会试试看,稍后再发回这里。
【解决方案2】:

这是正确的方法,供以后参考:

(*info->attributes)[i][0] = someString; 

诀窍是括号优先于被取消引用的 info->attributes,否则它将尝试首先找到 [i][0]。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多