C语言如何定义0数组
发布网友
发布时间:2022-04-30 03:22
我来回答
共6个回答
热心网友
时间:2023-01-20 14:08
如果要定义0长度的数组,在C语言是不可以实现的,因为C语言不支持长度为0的数组,事实上,这也是没意义的。
要把定义的数组初始值设置为0,针对数组的类型,可以区分操作:
1 局部变量。对于局部变量可以在定义时进行初始化。
type name[N] = {0};
从表现上看,是把第一个元素赋值为0,但是C语言约定,对于显式的部分初始化的情况,没有显式初始化部分的值自动赋值为0,所以以上写法,可以做到将整个数组初始化为0。
2 全局变量或静态局部变量。
对于这两种变量, 同样可以使用1的方式,不过更简洁的写法是不做初始化,如
type name[N];
或
static type name[N];
因为C语言规定,全局变量或静态局部变量没有显式初始化时,默认初始化值为0。所以不做初始化时与初始化为0的效果相同,而且代码更简洁,执行也更高效。
热心网友
时间:2023-01-20 15:26
编译错误应该是a[n]的问题,C90标准不支持运行时才知道大小的数组。
定义成全零方式有:
a[n] = {0, };
memset(a, 0, sizeof(a));追问不行啊
memset是什么?
追答#include
void *memset(void *s, int c, size_t n);
把s开始的内存区域,按照字节数n,设置成c
热心网友
时间:2023-01-20 17:01
是编译错误吧,你这里的n是个变量,到运行时才能确定,但数组在编译时就要确定长度,所以出错。建议这样#define N 100 再用N
热心网友
时间:2023-01-20 18:52
定义数组容量不能用变量
即不能用n来定义
你可以直接开大数组或用vector
至于全零,用memset(a,0,sizeof(a));
热心网友
时间:2023-01-20 21:00
int a[n],就可以了追问不行 数组里是随机数
热心网友
时间:2023-01-20 23:25
和编译器有关系,有的编译器不支持。不过好像GCC可以
C语言如何定义0数组
如果要定义0长度的数组,在C语言是不可以实现的,因为C语言不支持长度为0的数组,事实上,这也是没意义的。要把定义的数组初始值设置为0,针对数组的类型,可以区分操作:1 局部变量。对于局部变量可以在定义时进行初始化。type name[N] = {0};从表现上看,是把第一个元素赋值为0,但是C语言约定...
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,
1、首先,需要定义数组,数组常用类型有int型,float浮点型,char字符型等,输入即可定义。2、然后就是数组的名称了,可以自己定义,但是要符合相应规则。3、一般在数组定义阶段就确定数组的大小,输入数字即为数组大小,如下图所示。4、然后,可以对数组进行初始化,在花括号{}中输入即可。5、如果初始化...
c语言中怎么把一维数组初始化为全零啊,不用循环
首先,你可以直接在定义数组时指定所有元素为0,如:int arr[10]={0};。这种方法适用于数组的长度已知且希望所有元素均为0的情况。如果仅初始化部分元素,编译器会自动为剩余元素设置为0。2. 使用空花括号初始化:另一种方法是,即使不指定具体值,如 `int arr[31]={};`,编译器也会默认其他元...
C语言如何定义一个数组,使得数组里的数都大于0
如果是int类型,可以加上unsigned,但如果是double的话你可以在赋值的时候自己判断,做个函数,里面是个if,大于0的都可以,小于0的,强制赋值为0或者1什么的。
如何用C语言声明一个每个数据项只占一个位(用来存放0或1)的数组
可以用基本数据类型的每一位来表示每个数据项,这个数据类型来表示数组,比如你需要一个长度为8个数据项的数组,就申请一个BYTE,只要进行位运算就可以对其进行操作。如果长度比较长的话,再用多个BYTE类型的数组,可以满足要求,只是有点繁琐。如果按你的要求,即使有办法实现,那么每一个元素只是一个bit...
c语言如何定义数组
c语言定义数组的方法是:C语言中,同变量一样;数组也必须先定义后使用。一维数组的定义形式。1、类型标识符,数组名[常量表达式];例如int a[10];其中a为地址常量。2、如变量的定义一样,inta;double a;floata等;数组的定义只是把后面的变量名改为数组名而已。3、int a[10]就是定义了一个...
如何用c语言定义数组和矩阵?
1、定义数组和定义矩阵的程序格式完全一样,在软件中二者意思等价。通过“[]”自定义数组,同一行元素用“,”或者“空格”分隔,不同行用“;”2、矩阵生成命令,“[]”表示空元素,“zeros(n,m)”生成n行m列0矩阵,“ones(n,m)”生成n行m列全1矩阵。具体例子如下图所示。3、数组(或矩阵)...
c语言中怎么把一维数组初始化为全零啊,不用循环
1.int arr[10]={0};如果只对数组的一部分进行初始化,则编译器将把其他元素设置为0。因此,当只将第一个元素初始化为0时,编译器会自动将其他元素设为0 (就像前一句说的那样)。2.int arr[31]={};3.用memset函数在程序开始时初始化数组。比如:int arr[1024];memset(arr, 0, 1024); //...
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.第一种方法更具通用性,后一...