C语言里有没有把数组元素全部赋值为0的函数

全部赋值为0,只能循环么?我只知道在定义数组的时候能int a[3]={0}; 但如果在程序中多次初始化数组呢?

方法一、在定义时赋初值

1、静态数组

int[3][3]={0};

2、动态数组

int**a=newint*[n];

for(inti=0;i<n;i++)

a[i]=newint[m](0);

方法二、在定义完后赋值

for(inti=0;i<n;i++)

for(intj=0;j<m;j++)

a[i][j]=0;

方法三、用一个循环吧数组所有元素设置为0:

intarr[100];

inti=0;

for(i=0;i<100;i++)

arr[i]=0;//ThiswillmakeallZERO

方法四、

1、全局变量和静态变量初始化时会自动被设置为0。如果们声明全局变量,那么在运行前会变成全0。

intarr[1024];//Thisisglobal

intmain(void)

//statements

2、对于局部数组简写的初始化语法。如果一个数组被部分初始化,没有被初始化的元素会被自动设置为相应类型的0。这是编译器自动完成的。可以这样写:

intmain(void)

intarr[1024]={0};//ThiswillmakeallZERO

//statements

3、可以用memset函数在程序开始时初始化数组。这条命令这在已经修改了数组之后又想将它重置为全0特别有用。

intarr[1024];

arr[5]=67;

memset(ZEROARRAY,0,1024);//ThiswillreinitializealltoZERO

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-06

有,把数组元素全部赋值为0的函数是memset

函数原型:

extern void *memset(void *buffer, int c, int count);

头文件:

#include <string.h>

功能:把buffer所指内存区域的前count个字节设置成字符c。 
说明:返回指向buffer的指针。 

示例:

#include <string.h>//包含memset的头文件
#include <stdio.h>
int main(void)
{
    int buffer[5] = {1, 2, 3, 4, 5}, i;
    memset(buffer, 0, sizeof(buffer));//将buffer元素全置为0
    for (i = 0; i < 5; ++i){
        printf ("%d ", buffer[i]);
    }
    return 0;
}
//输出结果:0 0 0 0 0

第2个回答  推荐于2017-10-07
#include <string.h>
memset( a, 0, sizeof(a));
memset第一个参数是数组名,第二个参数表示赋值为 0, 第三个参数是数组的大小。本回答被提问者和网友采纳
第3个回答  2012-11-21
memset函数可以做到。

C语言里有没有把数组元素全部赋值为0的函数
1、静态数组 int[3][3]={0};2、动态数组 int**a=newint*[n];for(inti=0;i<n;i++)a[i]=newint[m](0);方法二、在定义完后赋值 for(inti=0;i<n;i++){ for(intj=0;j<m;j++)a[i][j]=0;} 方法三、用一个循环吧数组所有元素...

在C语言中,若想要把把数组中全部元素均赋为零,可对数组不赋初值,对吗...
当在函数内定义时(局部变量),要全部元素都为0,可以:int a[10]={};这样做。书上讲的应该是,初始化的时候,没有进行显示初始化的元 素的初始值都默认置0。

c语言数组怎么清零
c语言不能对这个数组赋值,只能通过遍历数组达到给数组中每个元素赋值的目的。初始化的时候可以用inta[4]={0};这样给整个数组元素赋值为0,若想给已初始化的数组清零,也只能遍历数组。在C语言中,所谓的“清空”,意思是“无视里面的数据”,而不是“让里面没有数据”。有时候可能需要把一个数组清...

c语言中怎么把一维数组初始化为全零啊,不用循环
3. 利用memset函数:对于较大的数组,如`int arr[1024];`,你可以使用`memset`函数进行初始化。例如:`memset(arr, 0, 1024);`。这个函数原型是`extern void *memset(void *buffer, int c, int count)`,它能在指定的内存块中填充指定值(这里是0),并传入数组的地址、填充值和数组长度。mem...

c语言中怎么给一个行和列都是100的二维数组都赋0值
void *memset (void *s, int c, size_t n);功能为,在地址s指向的内存单元开始,将c个字节的空间,每个都赋值为c。这个函数是按字节赋值的,所以对于赋值0值,可以直接将整个内存空间清零。参考代码:TYPE a[100][100];memset(a, 0, sizeof(a));\/\/整体清0.第一种方法更具通用性,后一...

C语言中怎么把一维数组初始化都为0,
2、然后就是数组的名称了,可以自己定义,但是要符合相应规则。3、一般在数组定义阶段就确定数组的大小,输入数字即为数组大小,如下图所示。4、然后,可以对数组进行初始化,在花括号{}中输入即可。5、如果初始化输入的数字未达到定义长度,后面则默认初始化为0。6、在数组定义和初始化后面要加上分号...

c语言 如何将已赋值的字符串初始化为空?
可以使用memset函数将字符串数组中所有元素全部设置为\\0即可。函数原型:void *memset(void *s, int ch, size_t n);函数说明:将s中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。示例:include <stdio.h>#include <string.h> int main(){char buf[256] = "hello ...

c语言中怎么把一维数组初始化为全零啊,不用循环
1.int arr[10]={0};如果只对数组的一部分进行初始化,则编译器将把其他元素设置为0。因此,当只将第一个元素初始化为0时,编译器会自动将其他元素设为0 (就像前一句说的那样)。2.int arr[31]={};3.用memset函数在程序开始时初始化数组。比如:int arr[1024];memset(arr, 0, 1024); \/\/...

c语言里有没有直接判断一个数组是否每个元素都=0的函数,还是要自己写...
应该没有现成的吧,自己写一个也很简单。int a[N]int i,s=0;for(i=0;i<N;i++)if(a[i]==0)s=s+1;if(s=N)printf("数组全为0");

C语言关于数组赋初值的问题char buff[10]={0};
是没有任何输出的,因为printf遇到的buff的第一个字符就是个字符串的结束符'\\0'而如果这样写:include <stdio.h> void main { char buff[5]={'0'};printf("%s",buff);} 才会看到输出了一个'0'这才是你理解的给第一个单元赋值为‘0’。char buff[5]={0};是一种定义空字符数组的严谨的...

相似回答