加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C中char数组的异常初始值设定项

发布时间:2020-12-16 10:35:33 所属栏目:百科 来源:网络整理
导读:我有char数组的初始化器: static const char dtmf_positions[] = "123A-------" "456B-------" "789C-------" "*0#D-------" "----E------" "-----F-----" "------G----" "-------H---" "--------J--" "---------K-" "----------L"; 有人可以解释,如何通过
我有char数组的初始化器:

static const char dtmf_positions[] = "123A-------" "456B-------" "789C-------" "*0#D-------" "----E------" "-----F-----" "------G----" "-------H---" "--------J--" "---------K-" "----------L";

有人可以解释,如何通过索引获得一些符号,例如符号’4′.谢谢.

好的,那我还有其他问题.有没有方便的方法通过上面的数组中的行和列索引访问数组元素,就像我们使用二维数组一样?

解决方法

从C99规范,5.1.1.2翻译阶段

  1. Adjacent string literal tokens are concatenated.

您也可以在其他C规范中找到类似的文本.

所以

在翻译阶段,“abc”“def”将变为“abcdef”.

所以你的定义类似于:

static const char dtmf_positions[] = "123A-------456B-------789C-------*0#D-----------E-----------F-----------G-----------H-----------J-----------K-----------L";

我希望你现在可以找到任何符号的索引:)

编辑:您的其他问题:

 
                               /* Col 012345678910 */
static const char dtmf_positions[] = "123A-------"  /* Row 0 */
                                     "456B-------"  /* Row 1 */
                                     "789C-------"  /* Row 2 */
                                     "*0#D-------"  /* Row 3 */
                                     "----E------"  /* Row 4 */
                                     "-----F-----"  /* Row 5 */
                                     "------G----"  /* Row 6 */
                                     "-------H---"  /* Row 7 */
                                     "--------J--"  /* Row 8 */
                                     "---------K-"  /* Row 9 */
                                     "----------L"; /* Row 10 */
#define NCOLS (sizeof("123A-------") - 1)
#define FETCH_CHAR(ROW,COL) dtmf_positions[ROW * NCOLS + COL]

在此you can access之后任何带有FETCH_CHAR(R,C)的字符

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读