精华内容
下载资源
问答
  • C++ cout字符数组和普通数组

    万次阅读 2017-05-12 02:18:27
    int ab[10] = {1,2,3,6,7}; char a[6] = {'h','a','p','p','y','\0'};...字符数组是可以用这种方式输出的,因为数组名即代表首地址,数组是一块连续的内存空间,所以能直接输出.如果是其他类型的数组则输出的是一
    int ab[10] = {1,2,3,6,7};
    char a[6] = {'h','a','p','p','y','\0'};
    char ac[] = "happy";
    cout<<ac<<endl;
    cout<<ac<<endl;
    cout<<ab<<endl;
    字符数组是可以用这种方式输出的,因为数组名即代表首地址,数组是一块连续的内存空间,所以能直接输出.如果是其他类型的数组则输出的是一个地址.根本区别在于没有终止符,因此其他数组要是直接能cout就无法停止下来。
    
    
    
    为啥输出结果是字符串就是一块连续的内存空间,整型数组就不是?那整型数组在内存上的顺序都是断续的吗?
    那数组char a[5]={'h','a','p','p','y'}呢?为什么直接输出cout<<a以后,后面还有两个乱码字符出现?这怎么解释。
    解答:
    1、char型数组中每一个元素都是1个字节所以字符串之间的地址是加1的,但是int数组每个元素占4个字节所以数组中每个元素地址的间隔是4,其实它也是连续的,出现乱码是因为系统没有找到结束符,你可以把数组设大一点,然后最后一个字节添0如:char a[6]={'h','a','p','p','y',0};就可以了。
    2、因为C和C++不进行数组的边界检查,数组在内存中存放的只是所有数组元素的值,而不存在一个地方可以表示数组的大小.所以cout函数没法知道该输出多少个元素。而字符串则不同,它有一个'\0'用来表示字符串结束,cout看到'\0'就知道输出结束了。可能你想问,为什么别的类型不也弄个类似于'\0'的结束符呢.那我就反问你,你认为哪个值用来做结束符合适?字符串可以用'\0'来表示结束,是因为'\0'这个值就是专门用来表示字符串结束的,对于其他类型,比如整数,你能说用0或-1来专门表示数据结束么。
    
    
    
    
    
    
    
    
    
    展开全文
  • char a[] = {'a','b','c'}; char b[] = "abc";... cout << a << endl; cout << b << endl; cout << c << endl; cout << d << en...

     

    1. char a[] = {'a','b','c'};

    2. char b[] = "abc";

    3. char c[] = { 'a','b','c','\0'};

    4. int d[] = {1,2,3 };

    5. cout << a << endl;

    6. cout << b << endl;

    7. cout << c << endl;

    8. cout << d << endl;

    结果:

    分析:

    1.以字符串字面量初始化的字符数组cout数组名可以输出整个数组;

    2.列表初始化的字符数组必须加上字符串结束符‘\0’才能cout数组名才能正确输出整个数组

    3.列表初始化的字符数组没加加‘\0’的话,可以看见字符数组打印出来了,但是后面多了几个字符,因为cout不知道什么时候结束

    4.而其他类型的数组,比如int,cout数组名输出的是这个数组的16进制地址,后面会验证这一点。

    为什么会出现这种情况呢?不是说数组名代表数组的首地址吗?

    因为cout对于cha[]重载了<<运算符呗。

    另外强调一点,数组b和c的长度都是4字节。

     

    那么我们怎么输出char数组的首地址呢,用printf:

     
    1. printf("%p \n", c);

    2. printf("%p \n",d);

    也可以这样:

    printf("%p \n", &d[0]);

    %p表示以16进制的形式输出。

    数组d的地址怎么跟上面不一样,因为这是运行两次的截图。。

    --------------------------------------------------

    以后遍历数组可以多使用范围for循环,自动检测,节省时间,比如输出上面定义的数组d:

     
    1. for (auto v: d) {

    2. cout << v << " ";

    3. }

    4. cout << endl;

    注:这是C++11新特性,vs2010不支持的,我用的vs2015.

    展开全文
  • 运用cout输出字符数组时,我本想输出001. 可是结果却是1. 这是不是程序默认将数组前面的0舍去了? 如果我想要输出的字符是001又应该怎么改? (由于是做一道题目时发现的这个问题,所以就没有简略的代码和图片了...
  • 而处理字符数组名时,则会“聪明地”直接输出字符串,直到遇到’\0’为止 #include <iostream> using namespace std; int main() { float treacle[10] = { 0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9 };//这里...

    cout处理整型/实型 数组(int,long,short,long,float,double等)时,会直接输出地址
    而处理字符数组名时,则会“聪明地”直接输出字符串,直到遇到’\0’为止

    #include <iostream>
    using namespace std;
    int main()
    {
    	float treacle[10] = { 0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9 };//这里要注意,浮点数常量默认是double,这里转换为了float
    	float* p_f = treacle;
    	cout << p_f << endl//特别注意:这样子输出的是地址值,只有cout字符数组时才会默认输出字符串
    		<< p_f[9] << endl;
    	cin.get();
    
    	char charr[10] = { 44,45,46,47,48,49 };
    	char* p_c = charr;
    	cout << p_c << endl
    		<< p_f[0] << endl;
    
    	return 0;
    }
    

    输出结果为:
    006FFDFC
    9.9

    ,-./01
    0

    展开全文
  • 【C++】如何打印字符数组

    千次阅读 2020-01-01 21:55:33
    输出方法1,直接Cout字符数组名 注意C++定义字符数组里的元素需要加单引号,如果不加单引号,不能正常打印出定义的元素 unsigned char test1[6] = { '1','2','3','5' }; cout << test1; 输出方法2,按元素...

    输出方法1,直接Cout字符数组名

    注意C++定义字符数组里的元素需要加单引号,如果不加单引号,不能正常打印出定义的元素

    unsigned char test1[6] = { '1','2','3','5' };
     cout << test1;

    输出方法2,按元素依次输出

    unsigned char destMac[6];
    unsigned long phyaddrlen=6;
    SendARP(DstIp, 0, destMac, &phyaddrlen);
    
    printf("MAC地址:%02X-%02X-%02X-%02X-%02X-%02X", destMac[0], destMac[1], destMac[2], destMac[3], destMac[4], destMac[5]);  //%X以16进制输出

    ps:如果字符数组的数据元素里存放的是二进制数据,需要转为16进制打印,否则在cmd控制台无法正常显示

    参考链接
    https://www.cnblogs.com/ZaneEli/p/11089227.html

    展开全文
  • ”的赋值语句是错误的,因为在C++中,无法通过给字符数组名赋值来实现给字符数组每一个元素赋值。 正确的赋值方法应该是: 通过for循环来赋值 #include<iostream> using namespace std; int main(){ char ...
  • C++字符数组的输入输出 字符数组的输入输出可以有两种方法: 1) 逐个字符输入输出。 2) 将整个字符串一次输入或输出。...如前所述,字符数组名str代表字符数组第一个元素的地址,执行“cout<<st
  • 以’\0’或数字0结尾的 字符数组 是字符串 上面图中的字符数组不是以0结尾,不构成字符串,用cout输出时会出现乱码; 在字符数组b[ ]的末尾添上0之后,b成为字符串,可以正常输出!
  • 字符串和字符数组

    2021-07-21 16:08:49
    字符串与一维字符数组 字符数组特有的形式:使用字符串常量 char name2[ ]=“hust”; //数组长度为5 一维数组的通用形式:枚举字符常量的形式 char name1[ ]={‘h’,‘u’,‘s’,‘t’}; //数组长度为4 二....
  • char *p = "Hello,...cout << p << endl; //输出Hello,World! cout << *p << endl; //输出H 正确输出:cout << (void *)p << endl; **********************************...
  • 二维字符数组与字符串数组的使用

    千次阅读 2020-03-20 17:34:15
    二维字符数组与字符串数组的使用 一维字符数组的定义形式如下: <存储类型>char<数组名>[<常量表达式>]={<初始值>}; 二维字符数组定义的形式是: <存储类型>char<数组名>...
  • 字符串与字符数组

    2013-10-15 09:31:30
    字符数组:存放char类型的数组 字符串:是一种特殊的字符数组,C++没有专门的字符串类型,一个字符串即为一个字符数组,不过字符串最后面还有“\0”表示字符串结束 字符串处理函数: strcmp(字符数组名1,...
  • 一、字符数组(C语言) sizeof关键字: 数据类型所占内存大小,单位是字节, 计算整个数组的长度,而不在乎数组里存储了什么内容。 strlen()函数: 返回存储在数组中的字符的个数,而不是数组本身的大小,即只统计...
  • C/C++字符串、字符数组的总结

    万次阅读 多人点赞 2018-08-19 16:15:48
    C++中并没有专门的字符串的类型,一个字符串实际上就是一个字符数组,与普通字符数组不同的是,字符串的结尾有一个字符\0,表示字符串的结束。 char 可以定义字符数组,也可以定义字符串 char 定义的字符数组 ...
  • 文章目录字符数组与字符指针字符数组字符指针指针数组(字符串) 字符数组与字符指针 在C语言中,可以用两种方法表示和存放字符串: (1)用字符数组存放一个字符串 char str[]="I am happy"; (2)用字符...
  • 字符类型和字符数组

    千次阅读 2016-07-18 22:19:11
    数组元素的类型可以是任何类型,当它是字符型的时候,我们称它为字符数组。字符类型由一个字符组成的字符常量或字符变量。 字符常量定义: const 字符常量=’字符’; 字符变量定义: char 字符变量; 字符...
  • C++ 字符 字符数组 字符串函数

    千次阅读 2013-11-21 22:17:46
    1. 字符数组初始化 char ch[] = {'C', 'h', 'i', 'n', 'a'}; // 数据只占用5个char类型的空间char ch[] = "China"; // 数据占用6个char类型的空间,末尾默认添加'\0' 2. 不能用赋值语句将一个字符串常量或字符...
  • C++字符数组

    2017-02-07 18:38:35
    C++字符数组_微学苑 用来存放字符数据的数组是字符数组字符数组中的一个元素存放一个字符。字符数组具有数组的共同属性。由于字符串应用广泛,C和C++专门为它提供了许多方便的用法和函数。 字符数组的定义...
  • 字符数组

    2016-01-30 08:42:54
    用char、[]和10构造了一个一维字符数组,系统为该字符数组分配10个内存单元,即10*sizeof(char),以存储10个字符型元素。 初始化: #include #include using namespace std; int main() { char str[10]; cin >> ...
  • C语言中字符数组初始化的几种方法

    万次阅读 多人点赞 2019-04-14 16:39:30
    1.C语言中的字符数组初始化 在C语言中,字符串是当做字符数组来处理的;所以字符串有两种声明方式,一种是字符数组,一种是字符指针。 1.1 直接逐个初始化字符数组字符数组的初始化,最容易理解的方式就是逐个...
  • 算法提高 递归倒置字符数组 完成一个递归程序,倒置字符数组。并打印实现过程 递归逻辑为: 当字符长度等于1时,直接返回 否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分 输入格式: 字符数组长度及该数组 ...
  • C++字符数组与字符串

    2019-12-30 19:48:11
    C++字符数组与字符串 ** THE FIRET PART 一声明和初始化**: 字符数组的两种方式: 1.`char a[]={‘p’,‘r’,‘e’,‘t’,‘t’,‘y’};//声明字符数组并初始化 2.char a[]=’‘pretty’’;//同上 字符串: ...
  • 字符数组:存储字符的数组 字符串 :是使用最频繁的字符数组,是一个特殊的字符数组 C++中并没有专门的字符串的类型,一个字符串实际上就是一个字符数组,与普通字符数组不同的是,字符串的结尾有一个字符\0,...
  • 1620-7 唐大智《2016年10月14日》[连续第... 字符数组的的输出,用cout语句输出整个字符数组,格式如下 a:cout (2):字符数组的整体输入。字符数组的整体输入有cin和cin.getline 格式:cin>>字符数组名; cin.g
  • char ch[] = { 'a','s','d','f','g','h','j'}; cout << sizeof(ch) / sizeof(char) << endl;//字符数组元素个数 cout << size(ch) << endl;...cout <...//字符数组元素...
  • 使用字符数组

    2016-10-28 00:09:05
    内容:(A)操作字符数组时候,一般不需要知道字符数组大小,因为可以通过字符串的结束标记判断操作是否结束! (1)求字符串"I am a god."的长度。 #include void main() { char s[]="I am a god.";
  • C++用字符数组存放一个字符串 在C++中可以用多种方法访问一个字符串,第一种字符数组: #include<iostream>//预处理 using namespace std;//命名空间 int main()//主函数 { char str[]="关注:C语言入门到...
  • c++中字符串与字符数组的互相转换

    万次阅读 多人点赞 2019-01-29 14:17:46
    在c++中与python不一样,python中使用print()可以输出任意类型的数据,但是c++... //字符串转字符数组 string name = "哈哈哈哈"; char buf[] = {0}; strcpy(buf , name.c_str());//字符串转字符数组,...
  • 字符数组和字符串用法差不多,如果要操作下标就定义字符数组字符数组求长度用strlen()函数,字符串类型求长度用.length()长度。 字符数组的终结字符为‘/0’。 #include <iostream> #include <...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 130,018
精华内容 52,007
关键字:

cout字符数组