使用strcat将字符串附加到字符数组(如char p [] ="TEST")是否有效

Neo*_*low 3 c++ string

#include<iostream>
#include<string.h>
using namespace std;
int main()
{

    char p [] = "TEST";
    strcat (p, "VAL");
    cout << p;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我理解的是正确的,那么像char p [] ="TEST"这样的陈述; 将从堆栈中分配空间.当我为这样的字符串调用strcat()时如何调整p []的存储以容纳额外的字符?

最后的cout打印"TESTVAL".这样调用strcat是否有效?如果是,这是如何工作的?我的理解可能有问题,但感觉我失去了联系.所以这很容易成为一个愚蠢的问题.请说清楚.

mol*_*ilo 8

未调整存储,调用无效,并且代码的行为未定义.

  • @NeonGlow纯粹的运气. (3认同)
  • @NeonGlow运气不好.尝试`strcat`比"VAL"更大的东西.例如,使用此答案会在我的计算机上崩溃. (2认同)
  • 未定义行为的可能结果之一是您可能认为正确的结果. (2认同)