网站项目实施方案网站重新建设的请示
网站项目实施方案,网站重新建设的请示,网站建设多少价格,效果图制作收费标准[转]char * 和字符数组 原文地址#xff1a;http://www.cnblogs.com/jeakon/archive/2012/05/27/2816809.html 代码中的int * i就是我们关注的焦点。它是一个指向int指针。也就是说#xff1a;i指向一个内存地址#xff0c;从这个地址开始存储了一个数据。int * i中的int标明…[转]char * 和字符数组 原文地址http://www.cnblogs.com/jeakon/archive/2012/05/27/2816809.html 代码中的int * i就是我们关注的焦点。它是一个指向int指针。也就是说i指向一个内存地址从这个地址开始存储了一个数据。int * i中的int标明应该使用int类型长度为sizeof(int)个字节来从这个地址取数据也就是说要一次取sizeof(int)个byte的数据来拼成最后的结果。最后一个例子也证明了这一点如果我们强制用unsigned char的大小的数据类型来对这个地址操作就只能取出数据的一部分。反过来说如果用较大数据类型来取实际存储较小数据类型的数据就有可能越界操作内存取回一些杂乱的内容或导致系统崩溃。int b[]这个数组标明有一组数放在以b开始地址的内存空间内每个元素占用了sizeof(int)个byte的内存单元如果有类似于ib;i;的操作i的值就每次递增sizeof(int)而不是1这样确保了i每次都能恰好取回一个正确的int。 同理char * c也是如此。如果我们定义了一个char *的变量c那么c也只不过是一个指向内存中某个地址的指针而已。之所以标明它是char *的类型就是说要以sizeof(char)为单位去内存中取数。所以我们应该称呼char * c为指向char类型的指针——而不是说c就是字符串。为什么传一个char *指针给printf(),strlen()之类的函数它就能把它当作一个字符串来处理呢没错我们不是定义了\0来表示一个字符串的终结么我们只需从起始地址不断累加遍历字符数组的每一个元素直到找到一个\0为止就算是处理一个字符串了——从起始地址到\0为止的字符数组元素构成一个“字符串”这就是C语言设计字符串的原理。 所以当一个函数要求传入一个char *的参数并不一定这个参数就一定是字符串(以\0结尾的字符数组)char *只是一个字符指针而已,它仅仅提供了一个内存地址和每次遍历元素的偏移量而已。究竟函数对传入的参数有什么要求还要视函数的具体实现而定。(我想ANSI C应该对参数有所要求和规定可惜偶没有ANSI C文件无法参考。 )C语言一般约定是用char * str来表示以\0结尾的字符数组但是由于某些实现上的效率的考虑往往没有严格遵守这个约定。C语言的设计理念中没有强调使用者一定要使用遵守这个约定不遵守这个约定也不违背C语言的基本语法规则。这或许可以看作是C语言和创造和使用它的黑客群体崇尚自由的一种特色、一种精神文化吧。 trackbackhttp://blog.vckbase.com/smileonce/archive/2005/06/26/8330.html 转载于:https://www.cnblogs.com/schowen/p/5513458.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89334.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!