我试过了,在mytc中没有good,但在tc中有。
怎么回事????????????????
mytc怎么了?我一直很信任的哦。

我:“日本人也算人?” 上帝:“不算。将它们圈养就行了。美国人在它们头上扔两蛋不就乖得很吗?你们讲究什么仁义道德?” http://www./bbs/dispbbs.asp?BoardID=1&RootID=36493&id=36500&star=1&skin=0
我试过了,在mytc中没有good,但在tc中有。
怎么回事????????????????
mytc怎么了?我一直很信任的哦。
VC中!!
20400070,good bye
我跟踪了一下发现正确阿!!你们跟踪进去看看!!20400070确实是那个“good”的首地址,其他的现行大家都知道了!!其他的tc我会看看的!!
同志们啊!!不是我打击大家!!好有趣的现象!!!让我慢慢道来!!
tc3.0中——他输出没有问题,但是win-tc就有趣了!!不信大家伙试一试!!
首先我没有取掉那行!!getch(); /* 请不要删除此行 */
输出为: I:\>char 256,♣X[YZ^_]▼──P8Θ│♥SP┤♠. ▲O◄X[├» bye
但我除掉它后得到的结果是!—— I:\>nochar 256,ÉÉΦ¿ bye
我以后肯定的不会再去使用win-tc了太让人失望了!!
#define NULL 0 void main() { char **p; int t; char *name[]={"hello","good","world","bye","\0"}; p=name+1; t=020400070; printf("%s,%s\n", t,*p); p+=2; while(**p!=NULL) printf("%s\n",*p++);
getch(); /* 请不要删除此行 */ }
小弟有点想法 请大家看看
我觉得good前面的数字不是内存地址 而是goog的八进制代码
我把程序改成上面那个样子 将数字写成八进制的形式 输出为good
是我的想法错了 还是其他原因
请高手指点
[此贴子已经被作者于2004-11-02 22:47:11编辑过]
我刚才看了!!!
good的16进制是676f6f64
不知道你凭什么说是020400070你可以使用计算器来算
试验了一下好像是那么回事。收回我说的话!!
想了一想还是你的错了!!吧!!
你看看%s的定义对应的参数应该是一个字符串的首地址,也就是说你的t=020400070; 恰好是这个程序里面的”good“的首地址!!如果我把这里改一下那么输出就不应该是good了!!!
[此贴子已经被作者于2004-11-03 00:20:10编辑过]
看来还是学一点汇编知识有用阿··!!下面看看我改动的部分!!
#define NULL 0 void main() { char **p; int t; char *name[]={"hello","good","world","bye","test","\0"};//这里改动了!! p=name+1; t=020400070; printf("%s,%s\n",t,*p); p+=2; while(**p!=NULL) printf("%s\n",*p++); }
输出是什么你自己看看!!就明白了!!