面试—每日一题(5)

    又是面试—每日一题,今天已经是这个系列的第5篇博文了!继续~~希望大家也能给力,给我顶起,也

 

好让我写的有信心啊!

        好了,废话少说!开始今天的正题!

 

以上代码有错误吗?

        

        嘿嘿!如果他这么问你,那肯定有错误了!这似乎是一种思维定势了,好了,错误是有的,我已经在我

 

的机子上跑过了!错误是一定有的!现在请指出错误,并加以改正!

同时,方便大家比较,我在举上几个类似的例子:

 

好了,例子我就举这么多了!现在不要看我的解答,你给我个答案吧!

        

         为什么有错,错在哪里?如何解决呢?

 

         好了,如果你是在想不出来,就看看我的解释吧,不要问我的解释对不对!或许我理解的也不对,但

 

是,男人的第六感告诉我,我的理解应该是对的,跟我来吧!数组越界,是的,答案就是这个,你有没有

 

想过呢?答案就是数组越界,或许,大概,可能这个词在你的脑海里,或者说这个答案在你的脑海里一闪

 

而过,或者说,你知道了这个答案,你不知道为什么?还有可能,你比我还懂这个问题,那请你留下你的

 

联系方式,我们沟通一下,如何!

         为什么说数组越界?

         首先,来看看这个strcpy这个函数。这个函数是干什么的,我不想说什么?你应该非常的懂,还有神

 

strlenstrcmp等等,哦,对了,现在不懂,你应该翻出你的书看看,或者看看msdn上说的,我想过段时

 

间,可能有更多的关于这类函数的面试题,为什么?你问我为什么?因为这些是字符串的标准处理函数,

 

处理起来很好很强大,写出来的程序更健壮,不是吗?如果你不知道,你该去问问你的老师了!

 

         好了,又扯远了,应该说strcpy的,来看看函数原型吧!

char *strcpy(

   char *strDestination,

   const char *strSource

);

 

    如果你问我,我怎么知道函数原型的话,我说宝贝,你太愚蠢了,如果不知道函数原型,你怎么用

 

呢?或者,你该到msdn上查查了,msdn那可是一个大宝贝,哈哈哈!是的,函数原型写的很清楚,如果你

 

的英文还可以的话,那就更不用我浪费口舌了,是的,我不想说太多的话,等等,我去喝口水,因为我说

 

的有点多了!

         strDestination参数是什么?目的字符串,不是有一个单词叫什么Destination吗?就在当中,看到了

 

吗?

         strSource参数又是什么?Source是什么意思?是的,就是原字符串。哦,是的,英语不错,我是对

 

我自己说的。不是夸你,伙计!如果你也知道,没有听我说,你就知道,你也该奖励你自己一下,不是

 

吗?

         好了,伙计,strcpy这个问题解决了吗?没有,还有,就是C++中的字符串,是的,就是字符串是以什

 

么结束的,是的,在C++中每一个字符串都有一个结束标示,这个如果你不知道,现在知道了吧。是什么

 

标示呢?就是“/0”。你该看看书了,书上一定会说的。现在,就是这两个参数,也就是这个问题,如果

 

一个参数,就是字符串没有“/0”这个结束标示,那么在copy的时候就一定会出错的,是的,如果原字符

 

串没有结束标示符,那么久会一直复制下去,就会报错的!是的,数组越界,编译时时不会出错的,但是

 

如果在运行时,就会弹出错误的对话框的。

         忘了,还有一点没有讲!那么那个结束标示符是怎么加上去的呢?是手动的还是系统自己加上去呢?

 

好了,现在我告诉你吧!

         char string[10];

         char *str1 = "01234567";

          strcpy(string, str1);

 

         for (int i = 0; i < 10; i++)

         {

                   cout<<string[i];

         }

 

又是一段代码,是的,这段代码是对的,毫无疑问的对的!看看,能知道问什么吗?

 

        当你初始化数组,是的,数组用来存放字符串的,当定义数组长度小于或等于初始字符个数时,系统

 

不会添加结束标示符的。但是,如果字符个数小于数组长度时,C++对字符串常量自动添加结束标示符

 

的。好了,什么错,为什么错,我都说清楚了,希望你能懂得,如何解决问题,自己动手吧!还等什么,

 

不要说还等我把错误改过来吧!对不起,我要睡觉了!各位,晚安!

         哦,不!最后在说一句,其实,strncpymemcpy是不错的选择,你试试看!好了,这次真的该去睡

 

觉了!

         最后,如果大家还有什么问题!或者说错误自己还是不会改的话,请贴出你的问题,我会在第一时间

 

回答你的问题!是的,我的博客宗旨是,你我互相学习!

 

posted @ 2011-03-23 13:51  Java EE  阅读(141)  评论(0编辑  收藏  举报