我“发现”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的各位同学 希望有帮助
当然 也希望误入此贴的各位高手板砖、、、