二十六、数组、指针和字符串:数组的存储与初始化、对象数组、数组作为函数参数
2015-04-26 14:46
776 查看
一、数组的存储 数组在内存中连续存储,数组名则为数组所占内存的首地址。 多维数组的存储,这里以二维数组 int a[2][3]为例 左边为高位,右边为低位 a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] //这种存储方式为行优先存储 二、数组的初始化 声明数组时对部分或全部元素赋值就是数组的初始化。 如简单数组类型的数组和对象数组,前者就是给相应数组元素赋值,后者则为调用对象的构造函数。 声明时为元素赋值,如:
int a[2]={1,2}; int a[]={1,2}; //都给出初始值时可以不说明元素个数 int a[3]={1,2} //这种情况必须给出元素个数,a[2]没赋值的情况下默认为0 多维数组类似 int [2][2]={1,2,1,2} int [][2]={1,2,1,2} //与上面等价 int [2][2]={{1,2},{1,2}} //等价,这样显示更为直观
三、对象数组
当数组元素是某个类的对象时此数组就是对象数组。
初始化时需要调用每个对象的构造函数。
如:
A b[2]={A(2,3)}; //b[0]显示指定初始值,则调用带形参的构造函数 //b[1]示显示指定,调用默认构造函数四、数组作为函数参数
数组元素作为函数参数时,实参和形参都须是数组名且类型要一样。此时传递的是数组的首地址,后面元素根据内存地址进行对应。
如果在函数内对数组元素值进行改变,则主调函数中实参数组的相应元素值也会改变。
主调函数中的实参数组也相应改变,那传数组是传值还是传引用?
实际是如果形参是数组,实际作用相当于“传引用了”。
因为形参如果是数组的形式,则并非传数组的值,而是传指针的值(首地址)。所传的并非数组的内容,而是指向数组首元素的指针。
如void fun(int& a[]); //这样会报错,arrays of references are illegal
相关文章推荐
- 鸡啄米:C++编程入门系列之二十六(数组、指针和字符串:数组的存储与初始化、对象数组、数组作为函数参数)
- C++编程入门系列之二十六(数组、指针和字符串:数组的存储与初始化、对象数组、数组作为函数参数)
- C++指针【数组、字符串作为函数的参数】
- C语言--- 高级指针2(结构体指针,数组作为函数参数)
- 二级指针作为函数参数传递初始化的一点总结
- 数组作为函数参数传递时退化为指针(腾讯)
- C++多维数组:存储方式、访问方式和作为函数参数
- 巩固:数组作为函数参数& 指针作为函数参数的用法
- 把参数字符串中的字符反向排列(不使用数组和库函数操作字符串的函数,不要局部数组来临时存储参数字符串)
- 二级指针作为函数参数传递初始化的一点总结
- 关于结构体里面的字符串指针输出出现乱码的问题与结构体数组作为参数传值的问题
- sizeof, strlen, 指针和数组作为函数参数
- 数组名作为函数参数时,退化为指针
- 数组、指针和字符串:指针用作函数参数、指针型函数和函数指针
- 数组和指针作为函数参数——高质量C、C++编程指南
- C++编程入门系列之三十(数组、指针和字符串:指针用作函数参数、指针型函数和函数指针)
- C语言中,数组名作为参数传递给函数时,退化为指针
- 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)
- 学习笔记---指针法访问数组、数组的实质、数组/指针作为函数参数
- 指针作为函数参数(处理数组的四种方式)