c语言定义不定长数组初始化_C语言数组初始化的三种方式

c语言定义不定长数组初始化_C语言数组初始化的三种方式1 0 初始化 intarr1 3 0 使用 0 的方式最简洁 一般在定义的时候使用 2 for 循环初始化 intarr2 3 for inti 0 i lt 3 i arr2 i i 使用 for 循环的好处是 可以将每个元素设为不同的值 3 memset 函数 memset 函数声明为 void memset void str int

1、{0} 初始化

int arr1[3] = {0};

使用 {0} 的方式最简洁,一般在定义的时候使用。

2、for 循环初始化

int arr2[3];

for (int i = 0; i < 3; i++) {

arr2[i] = i;

}

使用 for 循环的好处是:可以将每个元素设为不同的值。

3、memset 函数

memset 函数声明为:void *memset(void *str, int c, size_t n)

将 str 中当前位置后面的 n 个字节 (typedef unsigned int size_t )用 c 替换并返回 str 。

int arr3[3];

memset(arr3, 0, sizeof(int) * 3);

memset 一般使用“0”初始化内存单元,通常是给数组或结构体进行初始化,或清空数组或结构体。

一般如 char、int、float、double 等类型的变量直接初始化即可,如果用 memset 的话反而显得麻烦。

三种方式的示例代码如下:c语言定义不定长数组初始化_C语言数组初始化的三种方式

需要注意的是:memset函数按字节对内存块进行初始化,所以不能用它将 int 数组初始化为 0 和 -1 之外的其他值。

memset 赋值为 -1 或 0,最后的结果是正确的:c语言定义不定长数组初始化_C语言数组初始化的三种方式c语言定义不定长数组初始化_C语言数组初始化的三种方式

但使用memset赋值为-1和0以外的值,最终的结果并不是期望值。比如赋值为1,则如下图所示:c语言定义不定长数组初始化_C语言数组初始化的三种方式

因为 memset 是对每个字节进行赋值的,已知一个 int 为4字节,那么 memset 赋值时为二进制则为:

00000001 00000001 00000001 00000001 =

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223902.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午1:10
下一篇 2026年3月17日 下午1:10


相关推荐

  • 六.Redis极简入门-Redis实现分布式锁原理

    六.Redis极简入门-Redis实现分布式锁原理老鸟飞过 学习使用 欢迎交流理解分布式锁为什么要分布式锁在并发场景中 我们可以使用加锁的手段来保证业务方法或代码的原子性操作 从而防止数据被并发修改引发安全问题 在单体应用中我们可以使用互斥锁如 synchronized 同步代码块或者 Lock 锁来实现 如图 但是在集群 分布式应用中单纯的互斥锁是不能保证多个节点中对同一个数据的原性操作的 如图 集群模式中 每个服务都加了锁但是只能锁住自己 每个服务做库存做扣减操作 当库存都剩 1 的时候 三个服务并发减库存可能会导致库存减到 2 出现线程

    2026年3月18日
    3
  • java编译报错提示编码GBK的不可映射字符啥意思_java字符串编码转换

    java编译报错提示编码GBK的不可映射字符啥意思_java字符串编码转换在我想要在println输出一些中文的时候,发现编码出现错误原因:java程序在编译的时候,需要使用JDK开发工具包中的JAVAC.EXE命令,而JDK开发工具包是国际版的,默认格式为UNICODE的编码格式。因此在默认情况下,javac.exe会采用默认的编码格式,什么是默认的编码格式呢?也就是我们在编译JAVA程序时,在未指定源程序文件的编码格式的情况下,JDK会优先获取操作系统的file.encoding参数,然后JDK就把我们的JAVA源程序从file.encoding编码格式转化为JAVA

    2025年11月7日
    4
  • 初探架构之美_结构优化设计

    初探架构之美_结构优化设计中国科学技术大学软件学院 王松 原创作品版权所有转载请注明出处本科时就听说过《架构之美》这本书,但一直觉得会很深奥而没敢去看。这次课外阅读书籍中再次出现这本书,于是下定决心拜读一下这本著作。敲了几年代码,总觉得代码比较实际,架构比较空洞。“虚幻”的架构往往让人摸不着头脑,因为架构难以落在纸上,人们谈起架构时又总是以一种只可意会不可言传的姿态。美丽的架构无法定义,可它却一定是自然的、

    2025年8月11日
    4
  • 深入理解Promise运行原理

    深入理解Promise运行原理

    2022年3月13日
    44
  • java判断字符串不为空和null的方法

    java判断字符串不为空和null的方法首先 区分空串和 null 串 1 空串 是长度为 0 的字符串 它有自己的串长度 0 和内容 空 判断一个字符串为空的方法 if str length 0 或 if str equals 2 null 串表示目前没有任何对象与该变量关联 检查一个字符串是否为 null 的方法 if str null 3 检查一个字符串既不是 null

    2026年3月17日
    2
  • 希尔排序是一种…排序方法_希尔排序法属于

    希尔排序是一种…排序方法_希尔排序法属于1,有关插入排序(1)插入排序的基本方法是:每步将一个待排序的元素,按其排序码大小插入到前面已经排好序的一组元素的适当位置上去,直到元素全部插入为止。(2)可以选择不同的方法在已经排好序的有序数据表中寻找插入位置,依据查找方法的不同,有多种插入排序方法。下面是常用的三种。1>直接插入排序2>折半插入排序3>希尔排序(3)直接插入排序基本思想:当插入第i(i>1)个元素时,前

    2022年8月12日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号