C语言中如何将&arr传递给函数?参数应如何声明?
传递数组地址的函数参数声明方法
你已经明确参数类型为int (*)[8],直接将这个类型作为test函数的参数类型即可,完整实现代码如下:
#include <stdio.h> // 参数声明为指向长度为8的int数组的指针 void test(int (*arr_ptr)[8]) { // 示例:访问数组元素 printf("第一个元素:%d\n", (*arr_ptr)[0]); printf("第五个元素:%d\n", (*arr_ptr)[4]); return; } int main() { int arr[] = {1,2,3,4,5,6,7,8}; test(&arr); return 0; }
类型细节解释
int (*arr_ptr)[8] 的含义拆解:
arr_ptr是一个指针变量- 该指针指向的是固定长度为8的int类型数组
调用时传递&arr是完全匹配的,因为arr是长度为8的int数组,&arr的类型恰好就是int (*)[8]。
额外说明
这种写法的优势是参数自带编译期确定的数组长度信息,无需额外传递长度参数;但局限性也很明显——该参数只能接收长度为8的int数组的地址,通用性不如「传递数组名+长度参数」的方式。
内容的提问来源于stack exchange,提问作者Shiv
相关产品推荐
相关产品推荐

