直接上代码
#include<iostream>
#include<string.h> //memset需要包含头文件 也可以使用C++中#include<cstring>
using namespace std;
int a[10]; //全局变量 初始值为0
char b[4]; //字符型输出时 没有初始值 整形输出时 初始值为0
int main(){
memset(a,-1,sizeof(a));//数组名 要设置的值(只能设置为0、1、无穷大) 数组所占用的总字节数
//sizeof(a)此处为40 如果直接写36则最后一个数还为0 前九个为-1
for(int i=0;i<10;i++) printf("%d",a[i]);
memset(b,'g',sizeof(b)); //也可以为字符数组赋值 全部为单个字符
for(int i=0;i<4;i++) printf("%c",b[i]);
return 0;
}
注意:
C++中全局变量默认为0(整型数组、整型)
//全局变量中 int a[10]; //全为0 int a[10]={1}; //第一个为1 其他全为0
无穷大的使用与memset无穷大的设置
当我们在一些题中需要用到无穷大时,int类型最大表示为0x7ffffff,并且有时候会出现无穷大加无穷大,如果使用它,两个无穷大相加会变为负数,所以不能使用0x7ffffff。
但0x3f3f3f3f+0x3f3f3f3f=2122219134满足无穷大加无穷大还等于无穷大,所以一般使用0x3f3f3f3f3f作为最大值。
0x3f3f3f3f还有一个优点,当我们需要对一个整型数组全部赋值为最大值时,可以直接使用
memset(a,0x3f,sizeof(a)); memset是按单个字节进行存储的,刚好4个字节存储为0x3f3f3f3f。
C++中 0的表示为00000000,四个字节 组合在一起还是0
-1的表示为11111111,四个字节组合在一起还是-1