一个数组初始化的问题

  曾经看到过一个同事写的代码,将一个数组初始化,将它全部初始化为一个指定的值,他采用的是:

1         char a[10];
2         for(i=0; i<10; i++)
3         {
4                 a[i] = 2;
5         }

我的第一想法是何必写这么多代码呢?一个memset不就完事了?并且还自以为是的认为这样做不如memset效率。现在想起觉得自己是多么的傻逼,其实memset就是通过循环实现的。并且memset有其不适用的地方,比如如果数组不是char型呢?显然对于非char型的数组,memset为非0值时就不能适用了。

所以看到自己觉得有异议的代码不要急着按照自己的老思路来否定别人。

时间: 2024-10-11 21:31:16

一个数组初始化的问题的相关文章

C语言创建一个数组,利用函数调用实现数组的初始化,逆置和清零

★创建一个数组,实现函数init初始化数组.empty清空数组.reverse函数完成数组元素的逆置. #include<stdio.h> #include<stdlib.h> #include<string.h> void menu() { printf("****************************************\n"); printf("***************1.初始化数组*************\n&

动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有

 1定义接口: Num.h #ifndef_NUM_H_ #define_NUM_H_ #include<stdio.h> #include<stdlib.h> /************************************************************************/ /*数组的结构体类型                                                    */ /*******************

创建一个数组,实现初始化、逆置和清空

创建一个数组, 实现函数init()初始化数组. 实现empty()清空数组. 实现reverse()函数完成数组元素的逆置. 要求:自己设计函数的参数,返回值. 代码如下: #include<stdio.h> #include<stdlib.h>   void init(int arr[],int len)/*数组不能写成arr应写为arr[]或*arr*/ { int i; printf("初始化数组:\n"); for(i=0;i<len;i++)

Java之路(四)数组初始化

本文主要讲数组的初始化方法.可变参数列表以及可变参数列表对函数重载的影响. 数组初始化 定义数组的方式: int[] arr1; 或  int arr1[]; 数组初始化 通过上边的定义,我们只是得到了一个数组的引用.这时已经为引用分配了存储空间,但是还没有给数组对象本身分配任何空间.想要给数组对象分配存储空间,必须使用初始化表达式. a.在数组创建的地方进行初始化,如: int[] arr1 = {1,2,3,4,5}; 这种方式等价于使用new来进行存储空间分配. b.给数组的引用赋值,如:

python多维数组初始化后赋值的问题

当使用下述代码进行数组初始化时 >>>a = [[0]*3]*3 [[0,0,0], [0,0,0], [0,0,0]] >>>a[1][1] = 1 [[0,1,0], [0,1,0], [0,1,0]] >>>b = [[0,0,0],[0,0,0],[0,0,0]] [[0,0,0], [0,0,0], [0,0,0]] >>>b[1][1] = 1 [[0,0,0], [0,1,0], [0,0,0]] 这是因为初始化的问题,

求一个数组的最大子数组(C/C++实现)

最大子数组:要求相连,加起来的和最大的子数组就是一个数组的最大子数组.编译环境:VS2012,顺便说句其实我是C#程序员,我只是喜欢学C++. 其实这是个半成品,还有些BUG在里面,不过总体的思路是这样的,求最大的子数组,由一个中位分开,就是数组的中间位置,然后分别求中间位置横跨的,左边的,和右边的最大的,然后比较三者的大小,最大的为最大子数组.思路来自算法导论.今天算是把伪代码都实现了,但是貌似有点BUG,不知道有大神帮我提一下不?为了节约时间,我索性把一些问题的解释放过来,是算法导论的,我也

Chapter5_初始化与清理_数组初始化与可变参数列表

一.数组初始化 数组是相同类型的,用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.编译器是不允许指定数组的长度的,当使用语句int[] a时,拥有的只是一个符号名,即一个数组的引用,并不拥有这个数组的存储空间.要获取数组的存储空间,必须要写初始化表达式,最朴素的表达式类型如下 1 int[] a = {1,2,3}; 如果在编写程序时,不能确定数组的长度,可以使用如下方式,直接用new在数组里创建元素 1 int[] a = new int[3]; 当创建对象数组时,数组中的元素仅仅

用vector容器代替数组 ——使用数组初始化vector对象

在C++中,我们不能用数组直接初始化另一数组,而只能创建新的数组,然后显式的把原数组的元素逐个复制给新的数组. 按照C语言中的做法: const size_t arry_size=6; int int_arry[arry_size]={0,1,2,3,4,5}; int int_arry2[arry_size]; for(size_t ix=0;ix<arry_size;++i)        int_arry2[ix]=int_arry[i]; 而使用数组初始化vector对象,可以直接利用一

利用函数调用实现数组初始化、逆置和清零

4.创建一个数组, 实现函数init()初始化数组. 实现empty()清空数组. 实现reverse()函数完成数组元素的逆置. 要求:自己设计函数的参数,返回值. #include <stdio.h> //数组变化 void init(int arr[],int len) //数组初始化 { int i=0; int num=0; printf("初始化数组.\n"); for(i=0;i<len;i++) { scanf("%d",&