c++ PrimerPlus 第六版 第七章学习笔记

  1. 防止地址传递时更改实参地址内容:当地址作为形参时,在定义形参时使用const关键字,可以防止错误的改变形参所传递的地址内存储的内容;且并不要求实参地址中的数据为常量 。
  2. 需要数组作为函数形参时,形参的两种定义方式:a)定义两个形参,一个用于数组名/地址的 传递,一个用于数组元素个数;b)定义两个指针类型的形参,一个用于传递数组首元素地址,一个用于传递数组尾元素地址(指向的是数组最后一个元素后面的指针,而不是指向数组的最后一个元素)。
  3. Const位置与指针

   Const表示将该关键字后面所定义的设为常量,不允许修改该常量的值,当const的位置不同时,其表示也不相同。

例:a、const int *pt=&ages;表示*pt是一个常量,不能通过改变*pt的值来修改ages的值,但可以对pt进行赋值即可以将另一个地址重新赋给pt;

    b、int * const pt=&ages;表示pt是一个常量,不能将其重新赋值,只能指向ages,但可以通过*pt来修改ages的值。

    C、const int * const pt=&ages;表示*pt和pt都是常量,pt只能指向ages且不能通过*pt来修改ages的值。

 4、递归

      如果函数有涉及到变量,每次调用都会建立一个新的变量,即使变量名字相同,但是不是同一个变量,地址不同,但是同一次调用使用的是同一个变量(第二次调用前后第二次调用结束返回第一次调用时)

5、指针类型:

1)指向普通数据类型的指针:(或指向数值元素) int *p p=&a(a为普通变量);

2)指向一维普通数据类型数组的指针: int (*p)[m] ;

3)指向普通数据的指针数组:所指向的数据的类型 *p[ 数组长度],p是数组名,用于存放指针;

4)指向返回值为普通数据的函数的指针变量: int(*p)(int,int…) ,将函数原型中的函数名改为*指针名即可,此时p=函数名,调用:p(实参列表)等价于 函数名(实参列表);

5)返回指针值的函数:返回指针所指得数据类型 *函数名(形参列表),调用时返回的指针类型要与主调函数保持一致;

6)指向返回指针的函数的指针:返回指针所指得数据类型 *(*p)(形参列表),将函数原型中的函数名变为*指针名即可,p与函数名等价;

7)指向返回值为函数的指针数组:返回指针所指得数据类型 *(*ary[n]))(形参列表);注意:①、6)中的p为一级指针其与函数名等价,而7)中的ary实际为二级指针数组名为地址(代表其中的一级指针),而其又存放了指针值,总共就为二级指针。即有:

const double *(**pd)(double* ar, int n)=p;(错误的 ,定义的二级指针,p为一级)

const double *(**pd)(double* ar, int n)=ary;(正确,ary为二级指针,此时pd等价于ary,也即可用pd[0]代表ary中的第一个元素,即可用pd[0](形参列表)调用ary[0]代表的函数)

  ②、[ ]的优先级高于*,即有:

const double *(*pd[3])(double* ar, int n):表示pd是一个元素个数为3的指针数组,pd先与[]结合表示为一个数组,在与*结合表示为一个指针数组

const double *((*pd)[3])(double* ar, int n);表示pd是一个指向元素个数为3的数组的指针。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值