第一:写这篇文章源于我对'\0'和“\0”的探讨

              当我对char a []="\0";

               int size_a=sizeof(a);    //结果为2

当时我很纳闷字符串不是以'\0'结束吗,然后我又测试 :

              char a[]="b\0";

              cout<<sizeof(a);        //结果为3

再次测试:

              

              char a[]="\0\0\0";
              cout<<sizeof(a);        //结果为4

最后测试:

              

              char a[]="";
              cout<<sizeof(a);        //结果为1

通过测试发现字符串里的\0是系统自动添加,而且不管你原串里是否有\0;

第二:

示例一:int main(int argc, char *argv[])
{ char str[] = {'H','e','l','l','o'};
char bb[]={
'a','b','c','D'
};
cout<<bb<<endl;

输出结果如下:注意每次运行输出结果最后0后面的那个字符会不一样

示例二:int main(int argc, char *argv[])
{ char str[] = {'H','e','l','l','o'};
char bb[]={
'a','b','c','D'
};
cout<<str<<endl;

输出结果如图

为什么图一输出的结果是abcDHello*(*号表示随机字符)?我们可以推测出由于采用栈的存储结构,所以在函数中先定义的先压栈测试如下面的

示例三:

int main(int argc, char *argv[])
{ char str[] = {'H','e','l','l','o'};
char bb[]={
'a','b','c','D'
};
char cc[]={
'A','B'
};
cout<<cc<<endl;

输出结果如下图:

然后我们探讨一下最末尾为啥就一个随机数字呢,

int main()
{
char str[] = {'H','e','l','l','o'};

char bb[]={'a','b','c','D' };
char cc[]={'A','B'};
bb[7]='\0';
cout<<bb<<endl;

结果如下图,如果对b[7]='\0',那么输出截止到bb后面第七个

以上测试是在mingw gcc version3.2测试的,用的是cfree,注意我用vs2010测试结果不一样啊

测试如图

地址高的地方在栈底,输出的时候,比如输出cc吧,ab烫烫abcd烫烫几下,然后hello在烫几下最后输出也结束,至于最后为啥结束,我再探讨ing

希望大牛斧正!

c/c++字符数组和字符串大揭秘的更多相关文章

  1. C++基础之字符数组和字符串

    无意中发现了一个非常有意思的技术类型小品文系列,通过大牛指导菜鸟的方式,解说讲C++知识,有的非常基础却是开发中easy忽略的地方. [Elminster的专栏] http://blog.csdn.n ...

  2. C语言中整形数组、字符数组、字符串的区别

    一. 第一 整型数组的存放,数组最后是不加'\0'的,字符串会自动加上,因此存放字符的时候数组的大小要比实际字符的多一个 第二 整型数组 每一个单元是4个字节的,字符串是一个一个字符存放的,每个字符占 ...

  3. Base-64 字符数组或字符串的长度无效等问题解决方案

    项目特殊需要,调用ActiveX三维控件进行控件某一特殊部位的截图操作,这个截图保存由ActiveX控件控制保存到本地是没问题的,现在需要将这个截图上传到服务器,多人共享,就牵扯到需要读取本地文件…… ...

  4. C语言中字符数组和字符串指针分析

    这几天搞Unix上的C程序,里面用到了很多字符数组和字符串指针,我记得在学完C语言后相当一段时间里,对指针这个东西还是模模糊糊,后来工作也没怎么 用到过C,虽然网上这类的文章也有很多,还是决定自己在这 ...

  5. Base64 报错 的解决办法 (Base-64 字符数组或字符串的长度无效。, 输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符。)

    Base64 报错 的解决办法, 报错如下:1. FormatException: The input is not a valid Base-64 string as it contains a n ...

  6. c语言字符数组与字符串的使用详解

    转自:http://www.jb51.net/article/37456.htm 1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ ...

  7. c语言中的字符数组与字符串

    1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y ...

  8. C#编程中的Image/Bitmap与base64的转换及 Base-64 字符数组或字符串的长度无效问题 解决

    最近用base64编码传图片遇到了点问题,总结下. 首先总结下base64编码的逻辑,来自网络:https://www.cnblogs.com/zhangchengye/p/5432276.html ...

  9. C语言基础复习:字符,字符数组,字符串,字符指针

    1. 概述2. 字符2.1 字符定义和大小2.2 字符的输入和输出2.3 字符的计算3. 字符数组3.1 字符数组的定义和大小3.2 字符数组的输入和输出3.3 字符数组的计算4. 字符串4.1 字符 ...

随机推荐

  1. codeforces 609F. Frogs and mosquitoes 二分+线段树

    题目链接 F. Frogs and mosquitoes time limit per test 2 seconds memory limit per test 512 megabytes input ...

  2. [LeetCode]题解(python):126-Word Ladder II

    题目来源: https://leetcode.com/problems/word-ladder-ii/ 题意分析: 给定一个beginWord和一个endWord,以及一个字典单词,找出所有从begi ...

  3. fork出的子进程和父进程的继承关系【转载】

    [原文地址]http://blog.163.com/dengjingniurou@126/blog/static/53989196200962924412524/ fork出的子进程和父进程的继承关系 ...

  4. 在原有3306端口mysqld服务的情况再搭建第二个3308端口的mysql实例

    1 download the tar.gz [root@472322 tmp]# wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6 ...

  5. Java GUI图形界面开发工具

    Applet 应用程序     一种可以在 Web 浏览器中执行的小程序,扩展了浏览器中的网页功能. 缺: 1.需要下载 Applet 及其相关文件 2.Applet 的功能是受限制的 优: 3.无需 ...

  6. Uber选拔专车司机:五年以上驾驶经验 两小时视频培训

    摘要:说起当时下流行打车软件Uber的司机,还得从春节前在上海一次打车说起.那几天,记者在上海某商场逛到打烊时间,大包小包拎着袋子根本腾不出手拦出租车,而商场门口的出租车临时停靠点更是挤满“血拼”而归 ...

  7. Never-build package 'XXXX' requires always-build package 'EhLib70'

    控件包使用了DbGridEh.Requies也加入了ehlib70.dcp就是编译时不通过,提示:      Never-build   package   'XXXX'   requires   a ...

  8. Candy Sharing Game(模拟搜索)

    Candy Sharing Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  9. hadoop学习;安装jdk,workstation虚拟机v2v迁移;虚拟机之间和跨物理机之间ping网络通信;virtualbox的centos中关闭防火墙和检查服务启动

    JDK 在Ubuntu下的安装 与 环境变量的配置 前期准备工作: 找到  JDK 和 配置TXT文件  并拷贝到桌面下  不是目录 而是文件拷贝到桌面下 以下的命令部分就直接复制粘贴就能够了 1.配 ...

  10. WordPress创建过程

    最近php需要用php开发项目, 闲来无事,就研究了php,但是发了WordPress模板,这模板真心强大,简单易学好用, 好了直接正如正题 首先第一步 登录官网WordPress http://cn ...