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
相关推荐
派葛穆2 小时前
Lerobot -飞特舵机ST-3215双舵机联动(ESP_NOW)
c语言
零依赖极客3 小时前
Day 6·1 ARMv8.2 dotprod——vdotq_s32 一条指令做 4 个点积
c语言·开发语言·人工智能·矩阵·arm·vllm
老王爱玩车6 小时前
深入理解指针2
c语言·开发语言·学习
l1t8 小时前
用superpi、tinypi、tpi等工具计算圆周率的比较
c语言·算法
零依赖极客10 小时前
Day 8·1 自注意力机制:Q·K^T/softmax/V的在线计算
c语言·arm开发·人工智能·llama
水饺编程12 小时前
第5章,[Win32 章节] :在平面直角坐标系中描点
c语言·c++·windows·visual studio
linx29512 小时前
单元九 · 零基础路线图-第 7–9 周·类与 RAII
c语言·开发语言·数据结构·c++·嵌入式硬件·算法
无忧.芙桃12 小时前
嵌入式(一):嵌入式历史与计算机基础:从 ENIAC 到 MCU 四大技术方向
c语言·单片机·嵌入式硬件·计算机
一只旭宝12 小时前
Python 与 C/C++ 内存模型对比总结
c语言·c++·python
白色的北极熊13 小时前
c语言 输出菱形字符串
c语言·开发语言