| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 411 人关注过本帖
标题:求解啊?指针不太懂,看不懂啊!!
只看楼主 加入收藏
远方的海
Rank: 1
等 级:新手上路
帖 子:18
专家分:6
注 册:2011-11-11
结帖率:83.33%
收藏
已结贴  问题点数:2 回复次数:2 
求解啊?指针不太懂,看不懂啊!!
#include<stdio.h>
void main()
{
    int (*p)[4];
    int a[4]={11,22,33,44};
    int b[2][4]={11,22,33,44};
    int *m[4]={&a[0],&a[1],&a[2],&a[3]};
    p=b;
    printf("%d\n",*(*p+1));
    printf("%d\n",**p+1);
    printf("%d\n",**(p+1));
    printf("%d\n",*m);
    printf("%d\n",*(*m+1));
    printf("%d\n",**m+1);
    printf("%d\n",**(m+1));
}
为什么输出的是这个结果,求详解啊!!printf()里面的是什么意思啊?
2011-12-20 11:07
jia393741127
Rank: 2
等 级:论坛游民
帖 子:16
专家分:29
注 册:2011-12-20
收藏
得分:2 
你这么看一个*相当于一个一维数组,两个*号 就是一个二维数组。 但要注意指针的指针和指针的数组 *(*p+1) 代表第一行第二列 也就是22 具体表示为 (*a)[1]  .**p+1这个表示 第一行第一列 11在加1 等于12  由于b[2][4]只有第一行数据 所以第二行数据默认为0. 这就是为 第三个printf输出0. *m可以理解为*(m+0)表示 第一个指针的值 。*m+1理解为第一行第二列 也就是22  **m+1这个 也是*(*m+0)+1 同理 得12.**(m+1)这个你在根据我的分析 自己判断多少吧。

[ 本帖最后由 jia393741127 于 2011-12-20 12:30 编辑 ]
2011-12-20 12:28
远方的海
Rank: 1
等 级:新手上路
帖 子:18
专家分:6
注 册:2011-11-11
收藏
得分:0 
回复 2楼 jia393741127
答案是不是22,就是*m表示第一个指针的值,所以*(m+1)表示是第二个指针的值,再加一个*,就是**(m+1)把第二个指针的值析出来.不知道对不对啊.
2011-12-27 21:09
快速回复:求解啊?指针不太懂,看不懂啊!!
数据加载中...
 
   



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

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