数组的简介:
数组:顺序存储类型相同的值;定义: 数据类型 数组名[整形常量表达式] ;我们可以通过数组的下标进行访问数组的元素(数组含有n各元素的下标是从0开始到n-1结束);
const修饰数组的时候将数组设置为只读模式,数组中的值不能有新值的写入数组中;
数组不初始化数组内部的值为垃圾值,部分初始化未初始化的值为0;
数组中的未定义行为:数组下标越界,程序能运行但是结果比较奇怪
指针简介:
指针:一个值为内存地址的变量;指针的变量为地址,保存地址值
Int a; int * p; p = &a; p存储int类型变量地址的指针
与地址相关的运算符:
&:在后面跟变量名可以给出变量的地址
*:在后面跟指针或者地址可以给出指针或者地址所指向的值
声明指针变量时必须指定指针所指向变量的类型
指针的基本操作:
赋值:将地址值赋值给指针变量,包括数组名、带地址运算符的变量名、另一个指针进行赋值(地址和指针类型兼容)
解引用:*运算符给出了指针指向地址上所存储的值
取址:&运算符可以给出指针、变量的地址
指针与整数相加、相减:指针和整数相加,整数和指针所指的指针类型大小(字节为单位)相乘再相加初始地址
递增、减指针:保证递增、递减指针指向数组元素(指针有效)
指针和数组
数组名是数组的首地址
int a[10]中,a和&a[0]都代表数组首元素的内存地址
指针加一,指针的值加所指类型的大小
data + 2 == &data[2]
*(data + 2) == data[2]
*data +2 != *(data +2)
函数中的传递
值传递:处理一个基本的类型且不需要改变其值。保证数据的完整性不会修改原始数据
地址传递:函数中需要改变该数值使用地址传递;数组只能使用地址传递;地址传递修改原始数据
对形式参数使用const进行修饰:const修饰数组保护数组的数据不被修改(const不是限定原来的数组为常量,而是让函数处理数组的时候视为常量)
在编程的时候如果函数需要改变数组,声明数组形参时则不使用const
编写函数不用修改数组,声明数组的时候最好使用const