| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1145 人关注过本帖, 1 人收藏
标题:我“发现”C里面的指向数组的指针维数可以是变量(高手请果断无视。。)
取消只看楼主 加入收藏
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
结帖率:100%
收藏(1)
 问题点数:0 回复次数:3 
我“发现”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的各位同学 希望有帮助

当然 也希望误入此贴的各位高手板砖、、、
搜索更多相关主题的帖子: 今天 
2011-03-26 12:14
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
哦 忘说了 例子程序用gcc默认参数编译没错。。
2011-03-26 12:17
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
不知道是嘛标准 只知道gcc不报错 而且能实现功能 呵呵
2011-03-26 12:27
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用like2266在2011-3-26 14:48:06的发言:

为什么vc不能编译呢


貌似是对“标准”的支持情况不同导致的罢
2011-04-04 16:23
快速回复:我“发现”C里面的指向数组的指针维数可以是变量(高手请果断无视。。 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017316 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved