bug积累

1.只写 int p[len1 + len2]; 时,实际上是在使用 C99 标准中引入的变长数组(VLA, Variable Length Array)的特性。变长数组允许在栈上分配其大小在运行时确定的数组。这意味着 len1 和 len2 的值可以在程序运行时确定,但仍然可以用来声明数组 p 的大小。如果 len1 + len2 的值非常大,可能会导致栈溢出,因为变长数组是在栈上分配的。变长数组不能被初始化,因为编译器在编译时不知道数组的确切大小,因此无法为数组分配初始值。这就是为什么 int p[len1 + len2] = {}; 会报错的原因。

c 复制代码
    int p[len1 + len2] = {};//报错 不能直接定义
    int p[len1 + len2];
  1. ch2[len] = '\0';//需要在字符数组后面添加,不然会出现垃圾值,不会自动补全字符数组,需要自己手动添加 '\0'。
c 复制代码
#include <stdio.h>
/*12. 把一个字符串所有内容反转
	如: hello world 结果: dlrow olleh*/
int main()
{
    char *ch1 = "hello world";
    int len = strlen(ch1);
    char ch2[len+1];
    for (int i = 0; i < len; i++)
    {
       ch2[i] = ch1[len-1-i];
    }
    ch2[len] = '\0';//需要在字符数组后面添加,不然会出现垃圾值
    printf("%s",ch2);
    return 0;
}//输出结果dlrow olleh
相关推荐
YJlio1 天前
1.7 通过 Sysinternals Live 在线运行工具:不下载也能用的“云端工具箱”
c语言·网络·python·数码相机·ios·django·iphone
Lbs_gemini06031 天前
01-01-01 C++编程知识 C++入门 工具安装
c语言·开发语言·c++·学习·算法
shihui20032 天前
两个8*8点阵流水屏
c语言·51单片机·proteus
ghx_echo2 天前
c/c++结构体对齐,extern “C”与关键字const
c语言·c++
IvanCodes2 天前
五、C语言数组
c语言·开发语言
雪域迷影2 天前
MacOS下源码安装SDL3并运行hello.c示例程序
c语言·开发语言·macos·sdl3
坏柠2 天前
ESP32 的 NVS,并不是你以为的“Flash 存数据”
c语言
BackCatK Chen2 天前
14.2【保姆级C语言入门】 标准I/O实战宝典:6大模块手把手教你搞定文件操作,新手直接上手!
c语言·开发语言·fopen·fclose·标准i/o·getc·putc
IvanCodes2 天前
六、C语言字符串与字符
c语言·开发语言
搏博2 天前
蓝鸟四轴飞行器初版V3.0(三)——主控硬件设计
c语言·python