当前位置: 首页> 教育> 幼教 > bug积累

bug积累

时间:2025/7/12 9:15:46来源:https://blog.csdn.net/m0_46145044/article/details/140986882 浏览次数:0次

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

    int p[len1 + len2] = {};//报错 不能直接定义int p[len1 + len2];
  1. ch2[len] = ‘\0’;//需要在字符数组后面添加,不然会出现垃圾值,不会自动补全字符数组,需要自己手动添加 ‘\0’。
#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
  1. 这两句声明了两种不同类型的变量,它们之间的主要区别在于它们所指向的内存类型和使用方式。static char *info 它是一个指针变量,使用时只能改变指向,但是不能改变数据;static char info[20],而它不可以改变指向,但是可以改变里面存储的数据。这样是字符数组和字符串的区别。
char * get_dog_info( struct Dog * dog){// static char *info;报错static char info[20];sprintf(info,"狗的id为%d,名字%s,体重为%lf,年龄为%d",dog->id,dog->name,dog->weight,dog->age);return info;
}
关键字:bug积累

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: