一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

总结

  • 全局变量数组未初始化,则其默认值全为0.
  • 局部变量数组未初始化,则其默认值随机,需要手动清零。
  • 数组初始化为空最简单。

PS:关于所用函数的解析

一、全局变量数组

复制代码
1 #include <stdio.h>
2 int a[100];
3 int main()
4 {
5     printf("%d ", a[0]);
6     //0
7     return 0;
8 }
复制代码

自动为0,所以直接使用就ok。

二、局部变量数组

1.垃圾值

复制代码
1 #include <stdio.h>
2 int main()
3 {
4     int a[100];
5     printf("%d ", a[0]);
6     //-858993460
7     return 0;
8 }
复制代码

2.最简单:初始化为空

简单到哭了QAQ

int a[5] = {};

字符数组都行:

1 char buff[1000] = {};
2 char buff[1000] = "";

3.memset()

(1)头文件

C:#include<string.h>

C++:#include<cstring> or #include<string.h>

(2)函数原型

void *memset(void *s,int c,size_t n)

作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。

参数:s代表数组名,c代表要设置的值,n代表内存空间。

注意:第三个参数表示内存空间,而不是元素个数,内存空间=元素个数*每个元素所占空间。

1 int a[5];
2 memset(a,0,sizeof(a));
3 for(int i=0;i<5;i++)
4     cout<<a[i]<<' ';
5 //0 0 0 0 0

(3)局限

一般来说用0或-1初始化,别的值会发生意想不到的错误

复制代码
1 int a[5];
2 memset(a,1,sizeof(a));
3 for(int i=0;i<5;i++)
4     cout<<a[i]<<' ';
5 //16843009 16843009 16843009 16843009 16843009
6 第二个参数c的值的范围是0x00-0xff
复制代码

意义:如memset(s,1,n),c就是0x01,c是int型,四个字节(0x01010101),转化成十进制就是1643009

复制代码
 1 int a[5];
 2 cout<<0x02<<' '<<0x02020202<<endl;
 3 memset(a,2,sizeof(a));
 4 for(int i=0;i<5;i++)
 5     cout<<a[i]<<' ';
 6 //33686018 33686018 33686018 33686018 33686018
 7 int a[5];
 8 memset(a,0xff,sizeof(a));
 9 for(int i=0;i<5;i++)
10     cout<<a[i]<<' ';
11 //-1 -1 -1 -1 -1
12 //0xffffffff就是-1
复制代码

4.fill()

(1)头文件

1 #include <iostream>
2 using namespace std;

(2)例子

1 int a[10];
2 fill(a,a+10,0);

 

posted on   一杯清酒邀明月  阅读(2043)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示