| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 327 人关注过本帖
标题:两个程序 间的比较 高手解答
只看楼主 加入收藏
露营地
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:150
专家分:23
注 册:2015-6-27
结帖率:92.86%
收藏
已结贴  问题点数:10 回复次数:2 
两个程序 间的比较 高手解答
main(){
int x,*p,**pp;
x=10;
p=&x;
pp=&p;
printf("x=%d\n",**pp);
}




main(){
static char *ps[]={ "BASIC","DBASE","C","FORTRAN",
"PASCAL"};
char **pps;
int i;
for(i=0;i<5;i++){
pps=ps+i;
printf("%s\n",*pps);
}
}


两个程序  为什么第一个在最后输出的时候用了两个*,   而第二个只用了一个*??为什么呢     
2015-08-04 11:07
sunbeam_
Rank: 3Rank: 3
来 自:我家
等 级:论坛游侠
威 望:1
帖 子:31
专家分:113
注 册:2015-8-2
收藏
得分:5 
第一个是因为  pp是p的指针 p是x的指针  所以pp是x的二级指针  想要得到x的值  就需要两个*
第二个  是因为输出字符串需要的就是字符串的指针

爱好计算机的电气学渣
2015-08-04 11:14
kenierlee
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:58
专家分:474
注 册:2015-7-28
收藏
得分:5 
程序代码:
      
      x          p         pp        // 变量名
.0x00000000 0x00000004 0x00000008    // 内存地址
|----------|----------|----------|
|    10    |0x00000000|0x00000004|   //
|----------|----------|----------|

                                                                  ps        ps+1       ps+2       ps+3       ps+4        pps        // 变量名
.0x00000000 0x00000004 0x00000008 0x0000000C 0x00000010       0x00001000 0x00001004 0x00001008 0x0000100C 0x00001010 0x00001014     // 内存地址
|----------|----------|----------|----------|----------|     |----------|----------|----------|----------|----------|----------|
|  BASIC   |  DBASE   |    C     | FORTRAN  |  PASCAL  | ... |0x00000000|0x00000004|0x00000008|0x0000000C|0x00000010|0x00001010|    //
|----------|----------|----------|----------|----------|     |----------|----------|----------|----------|----------|----------|

注意第二段代码中的pps经过循环现在已经指向ps+4

[ 本帖最后由 kenierlee 于 2015-8-4 11:57 编辑 ]
2015-08-04 11:53
快速回复:两个程序 间的比较 高手解答
数据加载中...
 
   



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

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