【问题标题】:Is chars[4] and 4[chars] the same in C? Why? [duplicate]chars[4] 和 4[chars] 在 C 中是否相同?为什么? [复制]
【发布时间】:2010-12-19 02:19:55
【问题描述】:

我读过这篇文章,但我不相信:) 我这里没有编译器可以测试。

【问题讨论】:

    标签: c


    【解决方案1】:

    在原始 C 中,[] 符号只是一个指针数学助手。在[] 之前,您会在ptr 指向的块中查找第四个字符,例如:

    *(ptr+4)
    

    然后,他们引入了一个看起来更好的快捷方式:

    ptr[4]
    

    转换为前面的表达式。但是,如果你想这样写:

    4[ptr]
    

    这将转化为:

    *(4+ptr)
    

    这确实是一回事。

    【讨论】:

    • 所以 chars 是指向 my char[] 数组开头的指针。对吗?
    • 是的,C 数组就是这样。它是指向数组第一个元素的指针
    • 技术上不完全 - 请参阅:lysator.liu.se/c/c-faq/c-2.html(但就本答案而言,它们已经足够接近了!)
    【解决方案2】:

    因为a[b]和*(a+b)完全一样,而且+是可交换的。

    chars[4]*(chars+4)4[chars]*(4+chars)

    【讨论】:

    • 什么是char+4?什么是 *(chars+4)?
    • char + 4 是指向数组中第四个字符的指针,*(chars+4) 取消引用该指针以给出 chars[4] 位置处的字符
    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 2017-01-28
      • 2011-08-03
      • 2012-01-29
      • 2021-08-12
      • 2021-11-03
      • 2018-04-21
      • 1970-01-01
      • 2014-09-24
      • 2017-02-20
      相关资源
      最近更新 更多