- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
昨天关门了。
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]
在这方面请求支持。先谢谢你。
1条答案
按热度按时间gfttwv5a1#
(int*)&var->arr
它获取struct
(或union
)成员arr
的引用,并将其转换为对int的引用。这称为指针双关。如果arr
是char
的数组,则可以将其用作int
的数组在C中,它调用UndefinedB行为,因为它违反了严格别名规则。