当前位置: 代码迷 >> C语言 >> [求助]指针问题
  详细解决方案

[求助]指针问题

热度:93   发布时间:2007-09-19 14:01:06.0
[求助]指针问题
对比一下两个程序 有些不明白了 各位帮忙解释一下吧 3Q!
main(){ main(){
int x,*p,**pp; char **pps;
x=10; static char *ps[]={ "A","B","C","D","E"};
p=&x; int i;
pp=&p; for(i=0;i<5;i++){
pps=ps+i; //ps[]存放的应该是指针元素吧?这样写是什么意思
printf("%s\n", *pps);
printf("x=%d\n",**pp); }
} }
这个程序我明白 上面这个 最后为什么是*pps? 不是**pps?
搜索更多相关的解决方案: 指针  main  char  

----------------解决方案--------------------------------------------------------

我给你解释一下:main(){ main(){
int x,*p,**pp; char **pps;
x=10; static char *ps[]={ "A","B","C","D","E"};
p=&x; int i;
pp=&p; for(i=0;i<5;i++){
pps=ps+i; //在这里是pps指向ps的第0号元素。其实就是把第0号元素的地址付给pps。那样*pps就是ps的第0号元素,ps的第0号元素是字符串“A”的起始地址。那样**pps就是A了。不知道对否?
printf("%s\n", *pps);
printf("x=%d\n",**pp); }
} }
这个程序我明白 上面这个 最后为什么是*pps? 不是**pps?
}


----------------解决方案--------------------------------------------------------

如你所说,那最后printf("%s\n", *pps); 不是 **pps??
我改成**pps试过 出现异常 why?


----------------解决方案--------------------------------------------------------
感觉说的还不是很清楚
main(){ main(){
int x,*p,**pp; char **pps;
x=10; static char *ps[]={ "A","B","C","D","E"};
p=&x; int i;
pp=&p; for(i=0;i<5;i++){
pps=ps+i; //ps[]存放的是A、B、C、D、E各个元素的地址
printf("%s\n", *pps);
printf("x=%d\n",**pp); }
} }

----------------解决方案--------------------------------------------------------
char name[10];
printf("%s\n", name);

name是数组的首地址
*pps也是首地址
**pp是元素 只能用 %d %c 这样的 输出

我就是这样理解的
----------------解决方案--------------------------------------------------------
这两个程序应该都对的吧,我觉得不用改啊
----------------解决方案--------------------------------------------------------
恩对   2个程序 都 对   但是 要注意  其中细微不同 的 具体含义
----------------解决方案--------------------------------------------------------
我觉得对于第二个程序**pps是没有意义的
----------------解决方案--------------------------------------------------------

第二个程序中char *ps[]中的ps是一个指向指针变量的常指针.


----------------解决方案--------------------------------------------------------
原来如此 ,多谢各位

5楼夜火 thanks
----------------解决方案--------------------------------------------------------
  相关解决方案