首页 > 编程知识 正文

c++sort函数用法,定义数组时必须初始化吗

时间:2023-05-03 12:58:35 阅读:110516 作者:2056

文章目录一、数组概念1 .定义2 .数组声明二、数组初始化规则二、数组常规操作多维数组检索指定要素总结

学习概要主要学习数组的初始化和数组的一般操作等。 另一方面,数组概念1 .定义数组是数据格式,可以存储多个同类型的值。

2 .声明数组通用格式: TypeName ArrayName[ArraySize];

)1) TypeName )数组中存储的每个元素的值类型。 例如int、float、double、char等。

)2)数组名称。

)3)ArraySize:数组元素的个数。 此值必须在编译时为已知确定的值,因此必须为整数常量或常量值、常量表达式,并且不能为编译时值不确定的变量。

注意:

阵列化大小(if ) )。

编译可以正常编译而不报告错误;

执行结果是脏值

这种情况的写法非常危险。

错误示例: int name[10] coutname[0]endl; coutname[20]endl; //编译时,因为不报告错误,所以这样的数组越界访问很危险。 需要人工检查或添加代码检查。 否则,将输出脏值。 //运行以上代码时,系统将提示您使用数组name,但未初始化,输出的所有值都为脏值。 正确示例: intname [ 10 ]={ 0,1,2 }; //对于此初始化,默认后面的数字均为0coutname[0]endl; //0coutname[2]endl; //2coutname[8]endl; //0二、数组初始化规则1 .数组只能在定义时使用初始化。

2 .数组不能直接分配给另一个数组。

3 .数组定义时进行初始化时,数组大小可以不写入,编译器自动计算要素数。

4 .初始化数组时,如果初始化值小于数组大小,编译器会自动将未指定的元素设置为0。

5 .如果数组必须将所有值指定为a,则int ArrayName[10]={1}; 将数组的所有元素指定为1。

//正确的代码inta [4]={ 1,2,3,5 }; //1235 intb [ ]={ 1,2,3 }; //1 2 3虽然没有指定数组大小,但是编译器会自动计数为三个元素。 sizeof(b )=12个byte(3*4byte ),要求数组长,请选择sizeof(b )/sizeof (b [0] ); int c[3]={0}; //00 intd [5]={ 0,1,2 }; //0 1 2 0 0 int h[3]={}; //0 0 0即使什么都不写在大括号里,也会自动初始化为0,所以一般来说我们显示并写比较好。 //错误示例inte [2]={ 1,2,3 }; //初始值设定项目过多的int f[4]; f [4]={ 1,2,3,4 }; 用//{}方式初始化数组需要在定义的同时进行初始化。 定义后再初始化是不行的。 f[4]表示元素,索引超出了该数组的范围。 f=a; //错误消息:左操作数必须是左值。 因为不能将整个数组名称直接分配给其他数组名称。 charg [2]={ 199.0,2 }; //-57 2编译没有错误,但199.0是双精度型,存在char转换和精度损失,同时199.0超出了char的范围。 //错误修复示例int f[4]; //定义后初始化,可以使用for循环按元素进行初始化,用memcopy复制从其他数组复制的初始值,用memset进行批量初始化。 补充:左操作数必须是左值

通常,表达式等号左侧的数被认为是左值,而右侧的数被认为是右值。 通常,左边的值是变量。 也就是说,存在内存地址。

//以下两行代码在C中正常运行,C自动优化,可以得到我们编程的正常结果。 //但是,在c语言中编译错误,提示左操作数必须为左值。 int a=1,b=2,c; c=ab? a:b=10; //理由和先计算公式ab一样吗? a:b,返回常数。 常数不是变量,没有地址。 常数不能代入10。 在//C语言中,int a=1,b=2,c; c=ab? a:(b=10 ); 如果必须代入//值,则必须加括号。 c=10。 二、数组常规操作数组结构的实现是使用序列存储结构,它是线性存储结构,对存储的数据只有常规检索和修改操作。 的数组的修改(插入和删除),算法效率低。 数组有多维,但顺序存储是一维的,所以有两种方法存储数组。

(1)以列为主的)列后行)。

)2)行为人(先行后列) ——C语言一般采用该方法。 要搜索多维数组搜索中指定的元素,必须确定以下信息:

)1)多维数组是以列为主还是以行为为主?

)多维数组存储在存储器中的起始地址一般是数组名。

)3)数组的坐标索引。

)4)数组的数据类型——,获得各元素的字节数。

例如,数组a[n][m]寻找aij的位置,数据类型为int,行顺序为主。

a[I][j]=(a[0][0] ) imj ) sizeof(int ) );

总结

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。