C语言 如何解释(int*)&var->arr?[已关闭]

egmofgnx  于 2023-01-29  发布在  其他
关注(0)|答案(1)|浏览(106)

昨天关门了。
Improve this question
我正在用C编写一个应用程序,在某个时候我遇到了一个函数参数(int*)&var->arr。这里var是一个结构,arr是该结构的成员,是一个整型数组。
函数dummyFunc()的函数参数,在此函数中,参数传递给其他函数dummyFuncTransf(),在dummyFuncTransf()中,信息写入arr
我想知道,

  • (int*)&var->arr,如何解释这个。
  • 如何在dummyFunc()中接收此参数
  • 如何将其传递到dummyFuncTransf()

我试图回答的问题,

  • (int*)&var->arr-我知道arr的地址(int数组)是作为函数参数传递的
  • 由于参数是地址,所以我在dummyFunc()中使用int* funcArray指针接收。
  • 已将funcArray(指针持有的地址)传递到dummyFuncTransf()

软件构建成功,但出现警告
从不兼容的指针类型传递"dummyFuncTransf"的参数2 [-Wincompatible-pointer-types]
在这方面请求支持。先谢谢你。

gfttwv5a

gfttwv5a1#

(int*)&var->arr它获取struct(或union)成员arr的引用,并将其转换为对int的引用。这称为指针双关。如果arrchar的数组,则可以将其用作int的数组
在C中,它调用UndefinedB行为,因为它违反了严格别名规则。

相关问题