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++;
}