• 第七章


    1、复习函数

    C++对返回值有一定限制:不能是数组,但可以是其他任何类型,甚至是结构和对象!

    void cheers(int );    void cheers(int x);其中变量是可选的

    2、函数参数和按值传递

    int sum_arr(int arr[],int n);          sum_arr(cookies,ArSize);

    这里是将arr作为一个指针进行传递的,但在函数其余部分它将作为一个数组,可直接使用arr[i]; 函数原型中应该定义arr为int*类型,但在C++中int arr[]等价于int *,当在函数头或者函数原型中,而在别处却不行。

    arr[i]==*(ai+i)  //values

    &arr[i]==ai+i    //addresses

     

    3、函数和数组

    int age=39;

    const int *pt=&age;    // *pt始终不变,age 可变

    int *const finger=& age; //finger只指向age,但允许*finger进行修改age的值。

    const int month[2]={21,34};

    禁止将常量数组的地址赋给非常量指针意味着不能将数组名作为参数传递给使用非常量形参的函数:

    int sum(int arr[],int n);

    int j=sum(months,12);  //not allowed

    4、函数和二维数组

    int sum(int ar2[][4], int size);一个指向ar2是一个指向4个int的指针

    也可以arc[r][c]=*(*(ar2+r)+c)

    char *strchr(char *s,int c);   //在字符串s中返回指向c后的字符的指针

    5、函数和C-风格字符串

    char *pt=new char[n+1];

    pt[n]='';

    6、函数和结构

    与数组名不同,机构名只是结构的名称,要获得结构的地址,必须使用地址运算符&

    在函数传递时可以整个结构一起传,也可以只传递结构的地址,只传递结构的地址将节省时间和空间!注意形参变为指针,要用->

    8、函数与array对象

    10、函数指针

    函数地址是存储其机器语言代码的内存的开始地址。

    函数申明:double pam(int);

    指针类型申明: double (*pf) (int)    //就是将函数名换成指针名

    注意函数传递的是函数地址还是函数的返回值

    process(think);    //passes address of think() to process()

    thought(think());      //passes return value of think() to thought()

    double  (*pf)(int)  //pf是一个指向函数的指针

    double  *pf (int)    // pf()是一个返回指针的函数

    pf =pam  //pam 是一个函数名

    在调用时可以:

                     pam(4)等价于pf(4)或者(*pf)(4)

                   *pf(4)或者 *(*pf)(4)将可以显示出存储在这些地址处的实际值

    auto 只能用于单值初始化

    pa与&pa 区别:

    1、pa是指数组的第一个元素的地址,&pa是指整个数组的地址

    2、pa+1为数组中的下一个元素地址,而&pa+1是指数组pa后面一个12字节的内存块的地址

    3、要得到第一个元素的值,要对pa解除一次引用,要对&pa解除两次引用。  **&pa==*pa==pa[0]

                                                                                                                                

     

  • 相关阅读:
    一个仿windows泡泡屏保的实现
    易语言中锐浪报表绿色发布指南(免COM组件DLL注册)
    服务器被攻击小记
    aidl.exe'' finished with non-zero exit value 1问题解决【转载】
    给APP增加RSA签名
    fastreport中文乱码问题
    EF join
    ActionFilter、IAuthorizationFilter 权限验证重定向跳转到其它页面
    EF 调试跟踪生成的SQL语句
    Asp.net MVC 权限验证,以及是否允许匿名访问
  • 原文地址:https://www.cnblogs.com/daocaorenblog/p/4796056.html
Copyright © 2020-2023  润新知