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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

参考技术A

有,把数组元素全部赋值为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

参考技术B #include <string.h>
memset( a, 0, sizeof(a));
memset第一个参数是数组名,第二个参数表示赋值为 0, 第三个参数是数组的大小。本回答被提问者和网友采纳
参考技术C memset函数可以做到。

C语言中如何一次给一个数组变量赋值

就是假设数组是A[20]
如何用scanf的方法给20个数都覆上值?
如果不能用这种方法请给我讲讲别的谢谢

1.引入头文件#include "stdafx.h"和#include "stdio.h"。

2.定义主函数void main(),在主函数中插入如下代码:

int number[11];

int i = 0;

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

number[i]=i+1;

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

printf("%d ",number[i]);

3.点击红叹号测试。

参考技术A 即使用scanf也可以很多方法,严谨点就是循环
for(int i=0;i<20;i++)

printf("please input A[%d]:",i);
scanf("%d",&A[i]);


要么一次输入一串字符,处理获取到的字符串(比较麻烦我就写伪代码了)。
char ch[1024];
printf("please input A[0] to A[19],use ';' as a delimiter:");
scanf("%s",ch);
检查输入的是否是数字
检查是否有不正确的分隔符
检查是否输入了20个数
通过下标查找分隔符,获取对应的数字
通过atoi函数把截取出的数字字符串变为整数
over
参考技术B 连续批量赋值可以用memset
char A[20];
memset(A[2],'A',5);//对数组A第3个元素开始的连续5个元素统一赋值为字符'A'
如果每个需要赋值的元素都不同,就只能一个个赋值了。
参考技术C 即使用scanf也可以很多方法,严谨点就是循环
for(int
i=0;i<20;i++)

printf("please
input
A[%d]:",i);
scanf("%d",&A[i]);

要么一次输入一串字符,处理获取到的字符串(比较麻烦我就写伪代码了)。
char
ch[1024];
printf("please
input
A[0]
to
A[19],use
';'
as
a
delimiter:");
scanf("%s",ch);
检查输入的是否是数字
检查是否有不正确的分隔符
检查是否输入了20个数
通过下标查找分隔符,获取对应的数字
通过atoi函数把截取出的数字字符串变为整数
over
参考技术D int i;num;

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

scanf("%d",num);
A[i]=num;

以上是关于C语言里有没有把数组元素全部赋值为0的函数的主要内容,如果未能解决你的问题,请参考以下文章

C语言程序问题,数组元素无法赋值?请大家帮忙看看

C语言一维数组赋值方法

c语言中怎么把一个数组清空

c语言如何将字符串转为二进制的整型然后保存到整型数组里?

C语言 如何将一个二维数组的值全部替换成另一个二维数组

求 高手 C语言 数组和数组之间能直接赋值吗