1094570635 发表于 2022-12-4 18:09:44

char型数组赋值问题

#include<iostream>
using namespace std;

int main()
{
        char A[] = "a";

        cout << "A=" << A << endl;
        cout << "A=" << A << endl;

        char B[] = { 'a' };
        cout << "B=" <<B<< endl;


        return 0;
}
用字符赋值给数组B[],长度为1,输出B=a;

用字符串赋值给数组A[],长度为2,输出A=a,A=   ;
显示为空,也不出现乱码,A里面存的是什么?

傻眼貓咪 发表于 2022-12-4 18:16:12

空字符 '\0'

xiaotubie 发表于 2022-12-4 19:18:35

字符串是以字符'\0'为结尾的字符数组,也就是如果你定义"a"这样的字符串,那么实际内存存储的是'a'和'\0'两个字符。
当然这两个字符是存放在一个只读的内存区域,所以为什么一直说字符串是不可修改的,就是这个原因。
char A[] = "a";这样的做法,就是把只读内存中的'a'和'\0'复制一份用于初始化数组A,所以最后就是这样char A[]={'a','\0'};
页: [1]
查看完整版本: char型数组赋值问题