CodeSky 代码之空

随手记录自己的学习过程

C 函数与多维数组

2014-03-27 00:36分类: C评论: 0

书上讲到函数正确的定义方法:void sum_cols(int ar[][COLS], int rows)void sum_cols(int ar[][], int rows)则是不正确的,看了半天没明白,后来终于结合着看看懂了,编译器会把数组富豪转换为指针符号,如果是ar[1],则会变成ar+1,可是对于多维数组而言,下一个元素地址在何处不仅取决于类型,还取决于有多少个具体的元素,比如 oid sum_cols(int ar[][4], int rows),那么编译器就知道了,哦,int值4个字节,有4个int的元素,那么我跳到另一个就要走过16个字节,否则的话,就无法正确处理了。

于是诞生了变长数组……(形如:int sum2d(int rows, int cols, int ar[rows][cols]),并非是可以任意改变长度,而是你的函数不用写死了,通过传入前两个参数来决定指针的情况) rows,cols与指针位置不可颠倒。

评论 (0)