【问题标题】:C: How do I correctly access an Array element of a Struct passed by reference?C:如何正确访问通过引用传递的 Struct 的 Array 元素?
【发布时间】:2019-07-22 09:55:32
【问题描述】:

我有这个代码:

typedef struct _structVar{
   int myArray[10];
} structVar;

structVar MyStruct;

然后我通过引用函数来传递结构:

myFunct(&MyStruct);

如何访问 MyFunct 中的数组元素?

void myFunct(structVar *iStruct){

   for(char i=0; i<10; i++)
      (*iStruct)->myArray[i] = i; //Fix Here
}

感谢您的帮助。

【问题讨论】:

  • 只要iStruct-&gt;myArray[i] = i; 就可以了。
  • *iStruct 是结构对象本身,而不是指向结构的指针。 “箭头”运算符-&gt; 仅对指针进行操作(它意味着取消引用)。
  • 请记住,C 根本没有传递引用,只有传递值。您按值传递指针,这在某种程度上可以看作是模拟按引用传递,但它仍然不是正确的引用传递。
  • @Someprogrammerdude:模拟通过引用传递是通过引用传递。 C++ 采用了内置的按引用传递,但这并没有改变这样一个事实,即如果您通过值传递一个事物 X,该事物 X 通过指向它来引用事物 Y,那么您已经传递了一个对 Y 的引用。

标签: c arrays pointers struct member-access


【解决方案1】:

随便写

iStruct->myArray[i] = i;

(*iStruct).myArray[i] = i;

【讨论】:

  • 你应该提到第一种方法是更好(更常见)的方法。
  • @Jabberwocky 我认为它们是等价的。:)
  • 当然它们是等价的,但是(几乎)没有人使用第二种方式。
猜你喜欢
  • 2019-01-05
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-26
  • 2016-04-10
  • 2011-03-20
  • 2015-12-14
相关资源
最近更新 更多