C++ PrimerPlus P201~P252 函数与指针,数组,指针数组

库函数是已经定义和编译好的函数。

函数的返回值

通常,函数会将返回值复制到指定的存储单元或寄存器中。随后,调用程序会查看该内存单元。

函数原型

指出函数的参数类型,需在被调用之前声明,或在被调用前定义完整函数。

函数的参数

用于接收传递值的参数称为形参,传递给函数的值为实参。
c++使用参数表示实参,参量保存形参。
在函数中声明的变量是私有的局部变量,在函数结束时,占有的内存将被释放

函数参数中的数组

在将数组作为参数时,函数实际传递的是数组的首地址以及长度,这意味着函数将能直接访问原数组而非复制的数组,当数组中的内容不想被函数修改时,应在传值过程中使用const限定符,使其在函数中的值是常量。
二维数组**arr[3][4]**中,arr为指向指针的指针,对于二维数组有
arr[a][b] ==*( 星(arr+a)+b)

使用数组区间

可以用两个指针来传递数组,分别为数组的首部指针和数组的尾部指针的下一个指针。这在STL中被称为超尾

const和指针

const类型的常量的地址只能赋给const类型的指针。
const int*p 使p指向的元素的值是不可修改的,但p本身和p指向的元素本身都是可以被修改的。
*int const p 使p本身指向的位置是不可以修改的。

函数参数和C风格字符串

在C风格字符串中,最后一位永远是/0,其ascii码为0,所以可以使用while语句循环读取每一个字符,直到语句结束时自动停止。

函数指针

函数的指针要与函数的返回类型和参数完全相同,如果有一个函数是:double ImSad(float reason);
则其对应的指针必须为:double ( * fucptr)(float) ;
此时,fucptr为指向函数的指针,若要为其赋值,则可以直接将函数名赋给指针,因为函数名就是函数在内存中的地址,即:fucptr=ImSad
在使用函数指针作为函数时,可以直接将其作为函数名使用,如:fucptr(32.5f) 也可以用另外一种形式 ( * fucptr)(32.5f)

函数指针数组

在声明函数指针数组时,需要将数组的长度声明紧接着指针声明,如
double ( * fucptr[4])(float) ; 其中[] 的优先级要高于*,因此先与[]结合

auto&typedef

在很多时候声明指针可以用auto来代替。
tepedef用来为标识符设置别名,比如typedef long l 的意思是可以用l代替long,或将别名当做标识符声明,见P248

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值