1. 首页 > 科技

C 数组初始问题? c语言数组定义和赋值

C 数组初始问题?c语言数组定义和赋值

C语言中的数组定义初始值等问题。

二维数组第一维界限可以省略,具体由第二维界限确定。

对于a[][3]={1,2,3},第二维界限是3,数组元素共3个,因此第一维界限为1。

对于d[3][2]={{1,2},{34}},明确给出了第一维界限、第二维界限,后面各行数组元素部分赋值,部分未赋值。赋值的是d[0][0]、d[0][1]、d[1][0],其余未赋值。

c语言里数组的初始化的问题

1.

a[][]={1,2,3}是错误的

因为你没有给定行数或列数

二唯数组付值可以允许[][]中有一个为空例如:

int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

它等同于

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

但若两个都不给出电脑就无法识别了,

2.

a[2][3]={{1,2,3,4,},{5,6,7}}也是错的

错误在于第一行有{1,2,3,4}四个元素而在定义的时候只定义了[3]三个元素位置。

我们在定义二唯数组时写的例如:

int a[下标1][下标2]={}中

下标1用于限制数组行数,下标2用于限制列数他们和后面{}内的行 列是不能冲突的。也可以说下标给的“位置”应该不小于后面{}内要放在数组里的“元素”

可以该为a[2][4]={{1,2,3,4,},{5,6,7}}

它等同于a[2][4]={{1,2,3,4,},{5,6,7,0}}

兄弟加油哦!

C语言字符数组初始化的问题

char *a[ ]={"asdf","asdfsadf"}这个是指针数组,相当于char *a[2]={"asdf","asdfsadf"}

然后第一个是char a[1] = {'a','s','d'},char a[2] =......

char a[ ]={"asdf","asdfsadf"} 这样是不行的,如果是字符数组,就得用单引号,双引号是字符串,

char m1[ ]={'a','b','c''\0'} 这个是字符数组,

char m1[ ]={'a','sdfb','c''\0'},这样是不行的,单引号里面是一个字符,双引号才能出现连续字符。

如有不明可以追问。

C++中数组初始化的问题

这句话是对的啊

可以看出两点:

题目重要2点

1:假设存在无穷大的空间,说明可以另外使用空间

2:复杂度O(1)。线性判断不可行。

解决方案1:

申请1个一样大的数组。

访问原数组时,先判断那个数组的位置是否为某个设定值,如果是则访问过,

反之则没访问过。

设原数组为 A[XXX],标记数组为 B[XXX]

访问 A[X ]前先判断

if( B[ X ] == 某个值 )

{

访问过

}

else

{

B[X ] = 某个值

}

此方法有漏洞,新的标记数组也没有初始化。 若进行初始化复杂度则不保持O(1)

解决方案2:

此方法是完美方法

新建两个数组分别为From[XXX]; To[XXX]

初始化一个数字为 top = 0;

访问任意一个A成员A[m]时都执行如下检查:

if(From[m] < top && To[From[m]] == m)

{说明已经访问过该成员}

else

{

From[m] = top;

To[top] = m;

top++;

}