bug积累

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

c 复制代码
    int p[len1 + len2] = {};//报错 不能直接定义
    int p[len1 + len2];
  1. ch2len = '\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
相关推荐
无相求码8 小时前
【C语言】字符串的本质是什么,为什么 strlen 会读到野内存
c语言·开发语言
李永奉8 小时前
杰理可视化SDK开发-【BUG】配置“TWS两边同时按消息使能”功能后,按键单击功能无效失灵
开发语言·单片机·嵌入式硬件·物联网·bug
LuminousCPP9 小时前
C 语言集中实践全记录:顺序表 + 单链表原理实现与通讯录项目实战【附可运行源码】
c语言·开发语言·数据结构·经验分享·笔记
SuperByteMaster9 小时前
__set_MSP 和__set_MSPLIM 接口区别
c语言
CS创新实验室11 小时前
NumPy数组的C风格和Fortran风格
c语言·开发语言·numpy
LuminousCPP12 小时前
单链表专题(应用篇):三道经典题吃透删除、反转与快慢指针
c语言·数据结构·笔记
AI大模型-小雄13 小时前
充值Codex + GPT-5.5 并发 Bug 调试实战:从时序分析到回归测试
gpt·log4j·bug
薄情书生13 小时前
基于51单片机的电子钟设计(LCD12864显示 + DS1302)
c语言·51单片机·protues
半条-咸鱼14 小时前
【FreeRTOS】核心原理与实战速查手册
c语言·操作系统·rtos
白帽小阳14 小时前
Typora插件开发指南:打造专属IDE式写作环境
c语言·网络·python·网络安全·github·pygame·护网行动