读书人

帮忙看看这个C程序并讲解下多谢各

发布时间: 2012-02-15 12:09:43 作者: rapoo

帮忙看看这个C程序,并讲解下,谢谢各位老大
#include <stdio.h>
void main( )
{
char *c[ ]={ "ENTER ", "NEW ", "POINT ", "FIRST "};
char **cp[ ]={c+3,c+2,c+1,c};
char ***cpp=cp;
printf( "%s ",**++cpp);
printf( "%s ",*——*++cpp+3);
printf( "%s ",*cpp[—2]+3);
printf( "%s\n ",cpp[-1][—1]+1);
}
运行输出:POINTER STEW
~~指针基础比较薄弱。。呵呵

[解决办法]
A--------ENTER
B--------NEW
C--------POINT
D--------FIRST

*c[] = {A,B,C,D};
**cp[] = { {A}, {C,D}, {B,C,D}, {A,B,C,D}};
***cpp = cp;

1. *++cpp == {C,D}
**++cpp == C ----------POINT
2. ++cpp == {{B,C,D}}
*++cpp == {B,C,D}
--*++cpp == {A}
*--*++cpp == A
*--*++cpp+3 == A+3 ----------ER
3. cpp[-2] == {D}
*cpp[-2] == D
*cpp[-2]+3 == D+3 -----------ST
4. cpp[-1] == {C,D}
cpp[-1][-1] == B
cpp[-1][-1]+1 == B+1 --------EW

so, the result is : POINTER STEW
[解决办法]
**cp[] = { {A}, {C,D}, {B,C,D}, {A,B,C,D}};
-------------------------------------
为什么c+3=={A}??
[解决办法]
能编译通过么?
怎么我编译了一下,有错误呢

char **p[]={c+3,c+2,c+1,c}; 非法的初始化在main函数中;
[解决办法]
#include <stdio.h>
int main( )
{

char *c[]={ "ENTER ", "NEW ", "POINT ", "FIRST "};//c是指针数组,里面的元素是指向一个字符串的指针。
char **cp[]={c+3,c+2,c+1,c};//cp是一个数组,数组里面的元素是一个二级指针。
char ***cpp=cp;//cpp是一个指向二级指针的指针。
int i;

//输出c中的元素
for(i=0;i <4;i++)
printf( "c[%d]:%s\n ",i,c[i]);
printf( "________________\n ");
//输出cp中的元素
for(i=0;i <4;i++)
printf( "*cp[%d]:%s\n ",i,*cp[i]);
printf( "________________\n ");
//输出cpp中的元素
for(i=0;i <4;i++)
printf( "*cp[%d]:%s\n ",i,*cpp[i]);

getchar();
return 1;
}

读书人网 >C语言

热点推荐