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的函数的主要内容,如果未能解决你的问题,请参考以下文章