- 数组初始化问题:当给数组初始化过程中提供的数据少于数组长度时,会按照元素的顺序依次给数据元素初始化,剩下的元素赋值为0;无论是一维数组亦或是多维数组,都是这样。
指针加1操作,对于数组而言,地址会增加到下一个元素的地址,而不是下一个字节。推而广之,一个指针要知道它所指向对象的类型,需要知道这个对象存储所采用的字节数,从而在指针运算过程中,达到目的。
- 指针的数值是它所指向对象的地址。若是多字节的对象,一般指向首字节地址。
- *可以用来取得对象的值
- 指针+1操作,在原来指针的值上加上它所指向对象的字节大小 。
dates+2=&date[2]; *(dates+2)=date[2];
使用数组参数(将数组传给函数作为参数):2种方式
- int sum(int * ar,int n)
- int sum(int ar[],int n)
只有在函数声明形参变量的时候才可以使用第2种形式;第二种形式标明该指针是指向一个数组中的元素
使用函数参数:
将数组传递给函数,要传入数组的首地址和数组长度,换做指针需要传入数组的首指针和末尾指针
首指针就是数组元素名
末尾指针就是数组元素名+数组长度
指针操作:
- 赋值运算:
- 求值运算:
- 取指针地址:
- 将一个整数加给指针
- 增加指针的值
- 从指针中减去一个整数
- 减小指针
- 求差值
- 比较
若 希望 不修改 数组元素的值 ,可以 使用const关键字 来做限定 ,const并不是限定 原来数组不可以修改,固定不变 ,只是说函数在处理数组时,把数组当作固定不变的,从而阻止函数对于数据进行修改 ;若要修改数组元素,不要加上const限定 。
有关于 const:
- 指向const的指针不可以修改数值 :const double *p=rates;p指针指向数组p首元素 ,此时不可以通过指针p对数组进行修改,因为p指向的是常量;但是可以通过数组名+下标的方式对数组元素进行更新 。
- p的地址可以进行修改 ,如++操作
- 通常把指向常量的指针用作函数参量,标明函数不会用这个指针来修改数据如:void show_array(const int *,int )