文章内容参考了《C Primer Plus》第六版的P299、P305、P402
对形参使用const
int sum(const int array[], int size);
int sum(const int array[], int size)
{
int total = 0;
for (int i = 0; i < size; i++)
{
total += array[i];
}
return total;
}
在上面的函数声明以及函数定义中,我们并不需要修改数组元素的值(不需要修改指针变量指向的内容)
为了防止在函数中意外修改了指针变量指向的内容,我们可以使用const
需要注意的是,上面这种使用const的方式,不是要求传进来的数组是常量,而是要求函数在处理该数组时将其视为常量,不可更改其值。
这样使用const可以保护数组的数据在这个函数内不被修改,就像传值一样,可以保护数据的原始值。
指针
指针就是地址,同时指针是有类型的,指针的类型决定了可以通过这个指针访问多少个字节(多大的空间)。
我们口语中说的指针,通常指的是指针变量,是用来存放地址值的变量。
有一个指针变量p
*p++ , 即*(p++) , 先取内容,后指针+1,相当于先(*p),后(p++)
(*p)++ , 先取内容,后内容+1
*++p , 即*(++p) , 先指针+1,后取内容
int* ptr(); //ptr是函数名,返回类型是指向int类型的指针
int (*ptr)(); //ptr是指向函数的指针变量(函数指针),返回类型是int
int * (*ptr)(); //ptr是指向函数的指针变量(函数指针),返回类型是指向int类型的指针
//函数指针就是把函数名用一个指针代替,并且用括号括起来,这个括号不可以省略