一维数组用于函数的参数

在C++内部,用指针来处理数组。

C++编译器把 数组名[下标] 解释为 *(数组首地址+下标),
C++编译器把 地址[下标] 解释为 *(地址+下标)。

  • 函数参数列表中指针和数组的区别

在函数的参数列表中,二者只是写法有差别,实质使用上等同于指针。故在函数参数列表中传数组时,应该加上数组长度

用new创建一维数组

栈上的内存很小,存储大容量数据应该在堆上使用内存。

  • 动态创建的数组没有数组名,不能用sizeof运算符

安全创建大容量数组的方法

二维数组

在C++中,数组的长度必须是整数,可以是常量,也可以是表达式。

整型常量表达式

整型常量表达式指的是表达式中的操作数都是整数类型的, 这里的整数类型不仅仅是int类型, 还包括char, (unsigned) short, (unsigned) long等类型. 整型常量表达式中的操作数在编译时就已经确定了他的值, 因此只需要关注哪些值在编译时确定就可以了. 这包括以下几种情况:

  1. 单个字符, 比如’A’, ‘a’
  2. 单个整数数字以及由整数数字构成的表达式, 如123, 123 + 345
  3. 枚举常量
  4. 有sizeof 运算法返回的值, 如sizeof(int)
  5. NULL指针值
  6. 地址常量. 如0X12345678, 以及地址常量加上一个偏移

在C90和C++中, 静态数组定义时, 需要提供整形常量表达式. 如int A[10];因此, 你可以简单的试试用一个表达式去定义一个数组, 如果数组可以正常定义, 这表明这是一个整形表达式.

C90规定必须用常量表达式指明数组的大小,C99允许使用整型非常量表达式。经测试,在VS中可以用用整型非常量表达式,不能用变量;但是,Linux中还可以用变量。

另外, 在C中, const关键字并不是代表其所修饰的变量是常量. 他仅仅代表const 修饰的变量是read-only的, 无法对他进行修改. 这点与C++不同, C++中const关键字可以定义一个整形常量, 因此

参考资料:

注意
据上,因为在C/C++中,用枚举类型中的元素来代表常量,故枚举元素不能为字符常量或者整形常量。

二维数组用于函数的参数

数组指针即行指针。

一维数组名被解释为数组第0个元素的地址。
对一维数组名取地址得到的是数组的地址,是行地址。
即用一个组的第一个同学标定一个组的位置,该组也就有了位置。对数组名取地址得到的是该组第一个同学的位置,这也是这个组的位置标识。区别在于标定别的位置
若是先确定该组的位置再找下一个(对数组名取地址+1),找到的是排在本组的第一个同学之后的第二个同学的位置。若是直接找下一个组的位置(数组名+1),找到的是排在本组后的下一个组的第一个同学的位置。指针和数组(指针)的区别即在于此。

个人和团体,指针和数组,行为(函数)和内容(变量),整形和非整形。

最后修改日期: 2023年7月27日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。

11 − 1 =