| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 457 人关注过本帖
标题:指针问题
只看楼主 加入收藏
奥巴马
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2009-2-21
结帖率:100%
收藏
已结贴  问题点数:18 回复次数:8 
指针问题
#include<stdio.h>
int main()
{
    char *c[]={"ENTER","NEW","POINT","FIRST"};
    char **pc[]={c+3,c+2,c+1,c};
    char ***ppc=pc;
    printf("%s\n",**++ppc);
    printf("%s\n",*--*++ppc+3);
    printf("%s\n",*ppc[-2]+3);
    printf("%s\n",ppc[-1][-1]+1);
    return 0;
}
请各位大哥大姐帮帮讲解这些指针到底怎么指向什么,最好详细点。
搜索更多相关主题的帖子: 指针 
2010-03-25 23:10
奥巴马
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2009-2-21
收藏
得分:0 
怎么没人回帖啊,
2010-03-25 23:28
奥巴马
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2009-2-21
收藏
得分:0 
等回复等的花儿都谢了。
2010-03-25 23:40
奥巴马
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2009-2-21
收藏
得分:0 
主要就是第二个printf里的指针是怎么指向的。
2010-03-26 00:21
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:10 
    printf("%s\n",**++ppc); // *(*++ppc) -> *pc[1]  -> *(c+2) -> POINT  ==> *ppc == pc[1]
    printf("%s\n",*--*++ppc+3); // *++ppc -> pc[2] ==> --pc[2] -> c ==> *c -> ENTER  ==>  *c + 3 -> ER ==>*ppc == pc[2]
    printf("%s\n",*ppc[-2]+3); // *ppc[-2] -> *pc[0] == *(c+3) -> FIRST ==> *(c+3) + 3 -> ST
    printf("%s\n",ppc[-1][-1]+1); //ppc[-1][-1] -> *(c+2-1) + 1

用文字不好表达,这东西挺烦繁的,按定义一个个套吧。。。

2010-03-26 00:24
赤那
Rank: 3Rank: 3
来 自:广东
等 级:论坛游侠
威 望:1
帖 子:127
专家分:178
注 册:2010-3-1
收藏
得分:8 
#include<stdio.h>
void main()
{
#include<stdio.h>
int main()
{
    char *c[]={"ENTER","NEW","POINT","FIRST"};
    char **pc[]={c+3,c+2,c+1,c}; //定义一个二维字符类型的数组,该数组存放指针(地址);如c+3是字符串"FIRST"的首地址
    char ***ppc=pc;  //定义一个三维字符类型的变量,也是存放指针(地址)
    printf("%s\n",**++ppc);  //先算++ppc等于c+2,再算*(++ppc)等于"POINT"的首地址,最后算*(*(++ppc))等于"POINT"
    printf("%s\n",*--*++ppc+3);//先算*(++ppc),再算*(++ppc)+3,再算--(*(++ppc)+3), 最后算。。。
    printf("%s\n",*ppc[-2]+3);//之前**ppc已加了两次,*ppc[-2]则回到了初始位置***ppc=pc;
    printf("%s\n",ppc[-1][-1]+1);//ppc[0][0]相当于"FIRST"的首地址,ppc[-1][-1]相当于"POINT"的首地址
    return 0;
}
2010-03-26 00:39
奥巴马
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2009-2-21
收藏
得分:0 
*c+3不是c[0][2]吗?
2010-03-26 00:43
奥巴马
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2009-2-21
收藏
得分:0 
printf("%s\n",*--*++ppc+3);//先算*(++ppc),再算*(++ppc)+3,再算--(*(++ppc)+3), 最后算。。

这句还是不怎么明白。
2010-03-26 00:49
奥巴马
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2009-2-21
收藏
得分:0 
差不多明白了,谢楼上的两位了,
2010-03-26 00:52
快速回复:指针问题
数据加载中...
 
   



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

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