【问题标题】:Is it possible to use notation [] with pointers in C?是否可以在 C 中将符号 [] 与指针一起使用?
【发布时间】:2015-06-26 15:37:39
【问题描述】:

我使用 malloc() 声明一个整数矩阵:

int *m;
m = malloc(10 * sizeof(int));

我可以使用数组表示法[]从矩阵中选择一个元素吗?

例如: 我使用*(m+1) 选择矩阵 m 的第二个元素。 我可以通过这个符号选择矩阵 m 的第二个元素:m[1]

【问题讨论】:

  • 是的。请,下次,在询问之前尝试......
  • 您显示的代码中所有“declare”d 都是指向int 的指针,即m
  • @MichelBillaud:在哪里?
  • 在您发布的同时已修复。评论已删除。
  • @MichelBillaud:请注意这个建议。 “试试看”是造成太多错误教训的原因。例如,如果您想知道i = i++ 做了什么,“试试看”肯定会给您错误的答案。在 Carmine 的案例中,我们可能会说“请在下一次询问之前阅读任何关于指针的基本介绍。”

标签: c arrays notation


【解决方案1】:

是的,这是可能的。但是,如果您将其指定为静态大小,您也可以在声明中使用int m[10]

【讨论】:

    【解决方案2】:

    a[i]定义*(a+i),所以是的,[] 下标运算符适用于数组和指针表达式。

    除非它是sizeof 或一元& 运算符的操作数,或者是用于在声明中初始化另一个数组的字符串文字,否则为“N 元素”类型的表达式 T" 的数组被转换 ("decays") 为 "pointer to T" 类型的表达式,表达式的值是数组第一个元素的地址。

    所以,对于数组a,如果你写a[i]表达式 a从数组类型转换为指针类型,并应用[]运算符到结果指针表达式。对于指针p,无需转换,[]运算符直接作用于p

    【讨论】:

      猜你喜欢
      • 2011-03-29
      • 2021-01-07
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      • 2013-04-23
      • 2022-11-11
      相关资源
      最近更新 更多