百度首页 | 百度空间
 
查看文章
 
<<考考你的C指针>>题解『原』
2007年12月18日 星期二 18:19

    前面几天我贴下《C语言解惑》的一个C指针程序,呵呵,放在我的百度空间和EDN空间,总算我百度的一个网友做出来了。先不说答案,且听我如果解答这怪题。

#include<stdio.h>
char *c[]={
    "ENTER",
    "NEW",
    "POINT",
    "FIRST"
};
char **cp[]={c+3,c+2,c+1,c};
char ***cpp=cp;
int main(void)
{
    printf("%s",**++cpp);
    printf("%s ",*--*++cpp+3);
    printf("%s",*cpp[-2]+3);
    printf("%s\n",cpp[-1][-1]+1);
    return 0;
}

呵呵,我解释下char *c[]c是一个数组名,数组里面的元素是一个指针,这个指针指向的是一个字符串cpp的结构用语言描述下,cpp是一个地址,这个地址里面的内容放的是cpcp是个什么东西呢,也是一个地址,这个地址里面的内容放的是c+3,而c+3也是一个地址,其地址是字符串 FIRST\0 的首地址;现在我把cpp初始化的结构画出来,如下:


    相信大家应该可以解决这个程序问题,如果还不能,建议去看看《C和指针》。哦,对了,忘了说答案的,答案是POINTER STEW



类别:嵌入式c/c++语言 | 添加到搜藏 | 浏览() | 评论 (3)
 
最近读者:
 
网友评论:
1
2007年12月19日 星期三 19:40
结构图画的很清晰啊
不过过于冗繁的表达式,实际工程中恐怕不允许出现
华为的编程规范里就有这样一条:

"不要使用难懂的技巧性很高的语句,除非很有必要时。
说明:高技巧语句不等于高效率的程序,实际上程序的效率关键在于算法。"

估计这么复杂的表达式,也就只有在考试中或是语言教程里才能看的到
 
2
2008年02月01日 星期五 15:10
算是没有意义的考题,也就是给闲着没事做的学生来研究下,呵呵
 
3
2008年03月03日 星期一 02:49
最近学习C语言中,这个题目感觉没什么用处,最多就参考下,因为有的问题不必那么复杂来搞定的
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu