一、数组
1、下标的问题
下标从0开始,数组的大小不能为变量。
注意长度,为0—n-1。当心溢出
2、二维数组的一些问题
类型说明 数组名[常量表达式1(行)][常量表达式2(列)]
存放方式:
聚合方式赋值
int a[3][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}};
对部分元素赋值
如果对全部元素都赋初值,则定义数组时对第一维的长度可以 不指定,但第二维的长度不能省。
字符串数组的一些问题
字符数组和字符串的区别:最后必须有一个元素‘\0’,才成为字符串。
注意!杠铃的存储需要一个空间。
有效长度(即其中有效字符的个数)
二、函数
重载、声明、域等。
⚫ C++语言要求,在程序中用到的所有函数,必须 “先定义,后使用” (如果放在最前面恐怕没有问题)
⚫ 指定函数名字、函数返回值类型、函数实现的功能 以及参数的个数与类型,将这些信息通知编译系统。
默认情况下函数没有被调用的时候,形参不占内存。
只有在函数调用时,主调函数把实参的值传送给被调函数的形参,从而实现主调函数向 被调函数的数据传递。
- 函数定义
- – 指函数功能的确立
- – 指定函数名、函数类型、形参及类型、函数体等
- – 是完整独立的单位
- 函数原型(函数声明)
- – 是对函数名、返回值类型、形参类型的说明
- – 不包括函数体
- – 是一条语句,以分号结束,只起一个声明作用
⚫ 在一个函数内部定义的变量只在本函数范围内有效
⚫ 在复合语句内定义的变量只在本复合语句范围内有效
⚫ 在函数内部或复合语句内部定义的变量称为“局部变量”
⚫ 在函数内定义的变量是局部变量,而在函数之外 定义的变量称为外部变量
⚫ 外部变量是全局变量(也称全程变量)
⚫ 全局变量可以为本文件中其他函数所共用
⚫ 有效范围为从定义变量的位置开始到文件的末尾
当全局变量和局部变量同名时,在局部变量的作用范围中全局变量被屏蔽。
⚫ 标准的变量定义: 存储类型 数据类型 变量名;
⚫ 存储类型:
- ➢ 自动变量:auto
- ➢ 寄存器变量:register
- ➢ 外部变量:extern
- ➢ 静态变量:static
⚫ 传递整个数组给另一个函数,是将数组 的首地址作为参数传过去
- – 用数组名作函数参数
- – 只复制一个地址自然比复制全部数据效率高
- – 由于首地址相同,故实参数组与形参数组占 用同一段内存
- – 在该函数内,不仅可以读这个数组的元素, 还可以修改它们
注意:二维数组可省略数组第一维的长度 不能省略第二维的长度(int score[][3])。
带默认值的函数
int sub(int x=8,int y=3)
{
return x-y;
}
C++语言允许在函数说明或函数定义中为形参预赋一个默认的值,这样的函数就叫做带有默认形参值的函数。
在调用带有默认参数值的函数时,若为相应形参指定了实参,则形参将使用实参的值;
否则,形参将使用其默认值,这就大大地方便了函数的使用。
- 若函数具有多个形参,则缺省形参值必须自右向左连续地定义,并且在一个缺 省形参值的右边不能有未指定缺省值的参数。这是由于C++语言在函数调用时参数 是自右至左入栈这一约定所决定的。要有全都有
- 在调用一个函数时,如果省去了某个实参,则直到最右端的实参都要省去(当然,与它们对应的形参都要有缺省值)。从左到右顺序原则。
- 缺省形参值的说明必须出现在函数调用之前。这就是说,如果存在函数原型, 则形参的缺省值应在函数原型中指定;否则应该在函数定义中指定。另外,若函 数原型中已给出了形参的缺省值,则在函数定义中不得重复指定,即使所指定的 缺省值完全相同也不行。同域只能有一个!
- 在同一个作用域,一旦定义了缺省形参值,就不能再定义它。同域只能有一个!
- 如果几个函数说明出现在不同的作用域内,则允许分别为它们提供不同的缺省形参值。