C++ —— string容器(下)

string 容器设计的目标是什么

思考一下,char c[5]; 是什么?
回答1:c可以是存放4个字符的C风格字符数组。(不准)
回答2:c是可以存放5个字符的字符数组。(不准)
回答3:c是一块5字节的内存空间。(准确)
计算机的内存就是一块空间,没有数据类型的说法。
先来了解一个C++中用于字符串复制的一个标准库函数strcpy(destination, source);代码如下:

#include <iostream>
#include <cstring>
using namespace std;

int main() {
   
    const char* src = "Hello, World!";
    char dest[20];

    strcpy(dest, src);
    cout << "src: " << src << endl;
    cout << "dest: " << dest << endl;

    return 0;
}

strcpy()会将字符串(source)的内容复制到目标字符串(destination)中,直到遇到字符串结束符\0。这个函数会将源字符串中的所有字符(包括\0)逐一复制目标字符串中。
destination数组必须足够大,以容纳源字符串。如果目标数组没有足够的空间,就会发生 缓冲区溢出,导致未定义行为,这可能会导致程序崩溃或数据损坏。

运行结果如下:

src: Hello, World!
dest: Hello, World!

字符串空间用于不同的数据类型

直接看示例代码以及注释内容:

#include <iostream>
#include <cstring>
using namespace std;

int main() {
   
    char c[8]; // 在栈上分配8字节的内存空间
    // c的内存空间用于字符串
    strcpy(c, "abcd"); // 将字符串"abcd"复制到c中
    cout << "c = " << c << endl; // c = abcd

    // 把c的内存空间用于int型变量
    int* a, *b;
    a = (int *)c; // 前4个字节的空间用于整数a
    b = (int *)c + 4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值