C strcpy 是如何工作的,它会改变原始字符串的大小吗?

标签 c string size strcpy

我有这个代码..

#include <stdio.h>
#include <string.h>

int main() {

    char a[6]="Hello";

    char b[]="this is mine";

    strcpy(a,b);

    printf("%d\n",sizeof(a));
    printf("%d\n",sizeof(b));

    printf("%s\n",a);
    printf("%s\n",b);

    printf("%d\n",sizeof(a));

    return 0;
}

6
13
this is mine
this is mine
6

我想问,即使我将较大的strng复制到a,但它的大小没有改变,但它的内容却改变了,为什么?

任何帮助将不胜感激..

最佳答案

您无法更改数组 A 的大小。strcpy 的速度非常快,因此它假设您(用户)传递一个足够大的数组来容纳复制的字符串。您所做的就是覆盖数组 a 的空终止符,并将内存更改为超出您分配的位置。在许多情况下,这不会起作用并导致程序崩溃,但在一个简单的示例中,它会运行。

关于C strcpy 是如何工作的,它会改变原始字符串的大小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31063437/

相关文章:

c++ - 用一些 ASM 代码包装函数指令

c++ - 在新数组中存储字符数组地址

c# - 从字符串中提取特定文本

c - 使用 typedef 的 GCC 不兼容指针类型

python - 概念化分解枚举的列表理解

javascript - 设置 Ace 编辑器值时保留缩进

string - GoLang - 内存分配 - []字节与字符串

arrays - 来自 find 命令长度的 bash 数组

C# 'this.Width' 或 'this.Height' 在用户调整表单大小后返回错误

c++ - mac 中的 glTexParameteri 段错误