gpt4 book ai didi

c - 为什么数组边界索引也可以使用?

转载 作者:太空宇宙 更新时间:2023-11-04 06:30:08 25 4
gpt4 key购买 nike

char str2[13];
str2[13] = '\0';

看上面的例子,str2的最大合法索引是12,但是在这个例子中13,str2[13]也可以工作。这是代码片段:

#include<stdio.h>
int main(){
char *str1 = "we are happy!";
char str2[13];
str2[13] = '\0';
printf("Before: %s\n", str2);
char *p = str2;
while( *str1!='\0' )
*p++ = *str1++;
printf("After: %s\n", str2);
}

如何?谁能解释一下?

最佳答案

越界访问索引会调用未定义的行为。这意味着它可以做任何事情,包括使您的程序崩溃或使您的程序崩溃。也有可能上面的代码有时会崩溃而其他时候可以工作。这就是为什么它被称为未定义的行为有责任永远不调用未定义的行为。

关于c - 为什么数组边界索引也可以使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21656632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com