首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

帮忙看看这个C程序,并讲解下,多谢各位老大

2012-02-15 
帮忙看看这个C程序,并讲解下,谢谢各位老大#includestdio.hvoidmain(){char*c[]={ ENTER , NEW , PO

帮忙看看这个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;
}

热点排行