5.2.1 数组初始化 数组可以用一个列值来初始化,例如 int v1[] ={1,2,3,4}; char v2[]={‘a’,’b’,’c’,0}; 当数组定义时没有指定大小,当初始化采用列表初始化了,那么数组的大小由初始化时列表元素个数决定。所以v1和v2分别为 int[4] 和char[4]类型。如果明确指定了数组大小,当在初始化时...
memset的正规用法是只能用来初始化char类型的数组的,也就是说,它只接受0x00-0xFF的赋值。 因为char是1字节,memset是按照字节赋值的,相当于把每个字节都设为那个数,所以char型的数组可赋任意值; 而对于也常用的int类型,int是4个字节,当memset(,1,sizeof());时,1相当于ASSCII码的1,1转为二进制00000001,当做...
`memset()`函数在设置字节时,字符值会被转换成什么类型?在C语言的memset()函数中,设置字节时的字符值会被转换成无符号字符类型,也就是unsigned char类型。然后,使用这个unsigned char类型的值来填充指定的内存块。这就是为什么memset()可以用来设置内存区域的值,而不仅仅是字符数组。例如,你可以如此使用memset(...
下面是memset函数的一个示例用法: 代码语言:txt 复制 #include <stdio.h> #include <string.h> int main() { char str[50]; // 使用memset初始化数组 memset(str, 'A', sizeof(str)); printf("%s\n", str); return 0; } 输出结果为: 代码语言:txt 复制 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...
C语言中,数组初始化的方式主要有三种: 1、声明时,使用 {0} 初始化; 2、使用memset; 3、用for循环赋值。 那么,这三种方法的原理以及效率如何呢? 请看下面的测试代码: #define ARRAY_SIZE_MAX (1*1024*1024) void function1() { char array[ARRAY_SIZE_MAX] = {0}; //声明时使用{0}初始化为全0 ...
📌 方法3:使用memset函数 memset函数用于按字节给数组赋值,通常用于char型数组。对于int型数组,一般赋值为0或-1。例如: memset(arr, 0, sizeof(arr)); // 将arr中的每个元素赋值为0 memset(arr, 0, 16); // 将arr中的前4个元素赋值为0 memset(arr, 0, 8); // 将arr中的前2个元素赋值为0...
2、使用memset; 3、用for循环赋值。 那么,这三种方法的原理以及效率如何呢? 请看下面的测试代码: 1. #define ARRAY_SIZE_MAX (1*1024*1024) 2. 3. void function1() 4. { 5. char array[ARRAY_SIZE_MAX] = {0}; //声明时使用{0}初始化为全0 ...
memset的正规用法是只能用来初始化char类型的数组的,也就是说,它只接受0x00-0xFF的赋值。 因为char是1字节,memset是按照字节赋值的,相当于把每个字节都设为那个数,所以char型的数组可赋任意值; 而对于也常用的int类型,int是4个字节,当memset(,1,sizeof());时,1相当于ASSCII码的1,1转为二进制00000001,当做...
当然memset()对已经指定大小的数组也可以初始化。见如下图3的代码编译连接后的输出结果和上图2是完全一样的。例2:当原型函数中的void *指向的是整型数组 为了更好地理解memset()函数中关于把指定数据的低字节复制到目标内存中初始化的概念,本文设置一个指定的值为0xfff1, 其低字节是0xf1,如下代码将对一个...
字符串初始化的方法比较多,我这里简单介绍三种,因为字符串本质上是由一个个字符组成的字符数组,所以其初始化的最终目的,就是将字符数组里面的一个个字符都初始化为 '\0'。 方法一:使用空的字符串""。 charstr[10]=""; 方法二:使用memset。 charstr[10]; ...