我“发现”C里面的指向数组的指针维数可以是变量(高手请果断无视。。)
嘿嘿 学C几天的一个小发现 高手就不必看啦以前光知道 数组的维数是不能用变量的 必须是常量
今天发现 在用指针的操作的时候 指向数组的指针 它的维数可以是变量
举个例子就明白了
程序代码:
#include <stdio.h>
int m = 2;
int n = 3;
void test02(int (*p)[m][n])
{
(*p)[1][1] = 9;
}
int main(void)
{
int arr1[6] = {1,2,3,4,5,6}; /* 一维数组 */
int (*p)[m][n] = (int (*)[m][n])arr1; /* 一个指向二维数组的指针 维数由变量确定 */
(*p)[1][1] = 8; /* 1 2 3 4 8 6 */
test02((int (*)[m][n])arr1); /* 函数传值的时候也可以用 */
m = 3;
n = 2;
test02((int (*)[m][n])arr1); /* 维数变了 做的操作也变了 */
return 0;
}
例子中 定义了一个一维数组 而后通过指针用操作二维数组的方法对它进行了操作
没输出 有兴趣可以挂调试器看 或者你自己加个输出。。
我能想到的就是对数组操作的时候灵活性更大了 算是个小技巧罢 送给同样初学C的各位同学 希望有帮助
当然 也希望误入此贴的各位高手板砖、、、









