为什么 写成map[MAX][MAX]或者map[][MAX]就可以 而写成map[MAX][] 或者map[][]就不行? 编译器实际处理多维数组是把一维数组分段处理的,也就是说实际上并不存在多维数组,多维数组仅仅是个逻辑概念,所以行下标改变时,编译器必须知道有多少列,以计算偏移地址 如果是map[MAX][]的话, 假设目前坐标为map[i][x], 要移动到下一行相同列就是map[i+1][x],而参数没有提供列长度,编译器不知道这个+1到底要偏移多少个单位 追问 那一维数组呢 比如 我在main 函数中已经知道map具体的长度 map[MAX] 那么 我在传值的时候 形参是 int findway(int map[]) 里面是这么写么? 回答 一维数组根据元素类型就可以判断要偏移的长度,所以当函数的形参可以不提供长度 比如有int a[100]; 那么a[i+2]相对于 a[i] 的偏移量就是2个int的长度,所以函数形参可以用不带长度的数组或者直接就是个指针: f(int a[]); f(int * i)
C语言:二维数组 形参传值写法
最新推荐文章于 2024-07-13 21:55:23 发布