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
相关推荐
天才程序YUAN3 分钟前
Windows 11 C 盘扩容完整教程:恢复分区拦路、页面文件锁盘、WinRE 重建全记录
c语言·开发语言·windows
0x3F(小茶)4 分钟前
STM32 Bootloader与OTA升级
c语言·stm32·单片机·嵌入式硬件·物联网
我是一颗柠檬6 分钟前
C语言最全面复习:从入门到精通(2026年)
c语言·开发语言
Luminous.10 分钟前
C语言--day26
c语言·开发语言
luj_176811 分钟前
硝酸体系核关联假说解析
服务器·c语言·开发语言·经验分享·算法
zlinear数据采集卡15 小时前
基准电压电路深度解析:从理论参数到ZLinear采集卡的精准参考实战
c语言·单片机·嵌入式硬件·fpga开发·自动化
日晨难再16 小时前
C语言&Python&Bash&Tcl:全局变量和局部变量
c语言·python·bash·tcl
AI科技星18 小时前
基于光速螺旋第一性原理:$G,\varepsilon_0,\alpha$引电统一完整推导+严谨证明+高精度数值全维度分析
c语言·开发语言·网络·量子计算·agi
xgstb18 小时前
C语言随机数生成技巧
c语言·伪随机数·time函数·srand函数·随机数生成
c2385619 小时前
c/c++中的二叉树进阶
c语言·c++·算法