• 指针的使用


    学习链接:

    http://www.icourse163.org/learn/ZJU-200001?tid=1002316004#/learn/content?type=detail&id=1003086473&cid=1003636045

    指针的应用场景

    1.交换两个变量

    2.函数返回多个值,某些值就只能通过指针返回

      传入的参数实际上是需要保存带回的结果的变量

    3.函数返回运算的状态,结果通过指针返回

    传入函数的数组成了什么?

    函数参数表中的数组实际上是指针

      sizeof(a)=sizeof(int *)

    但是可以用数组的运算符[]进行运算

    数组参数

    以下四种函数原型是等价的:

    int sum(int *ar, int n)

    int  sum(int *,int)

    int sum(int ar[], int n)

    int sum(int [],int)

    数组变量是特殊的指针

    数组变量本身表达地址,所以

      int a[10]; int *p=a;

      但是数组的单元表达的是变量,需要用&取地址

      a==&a[0]

    []运算符可以对数组做也可以对指针做:

      p[0]<==>a[0]

    *运算符可以对指针做,也可以对数组做

      *a=25

    数组变量是const的指针,所以不能被赋值

    int a[] -->int * const a

    指针与const

    指针是const 表示一旦得到某个变量的地址,不能在指向其他的变量

      int * const q = &i ;

      * q =;26;

      q++;

    表示不能通过这个指针去修改那个变量(并不能使得那个变量成为const)

      const int * p= &i;

      *p = 26;error

      i = 26;ok

      p=&j ;ok

    转换

    1.总是可以把一个非const的值转换成const的

    2.当要传递的参数的类型币地址的时候,这是常用的手段:既能用比较少的字节数传递给参数,又能避免函数对外面的变量的修改

    const数组

    const int a[]={1,2,3}

    数组变量已经是const的指针了,这里的const表明数组的每个单元都是const int

    所以必须通过初始化进行赋值

    保护数组值

    因为把数组传入函数时传递的是地址,所以函数内部可以修改数组的值

    为了保护数组不被函数破坏,可以设置参数为const

      int sum (const int a[], int length);

  • 相关阅读:
    linux整理
    C++ 11 多线程--线程管理
    VS2013 配置全局 VC++目录
    visual studio运行时库MT、MTd、MD、MDd的研究
    C++(vs)多线程调试 (转)
    VS工程和Qt工程转换
    Qt 读写XML文件
    win32开发中多字节(ANSI)和宽字符(UNICODE)字符串处理函数参考
    QMenu----QT鼠标右键弹出菜单
    C++ 单例模式析构函数的运用,析构函数的线程安全
  • 原文地址:https://www.cnblogs.com/y15821933792/p/8964730.html
Copyright © 2020-2023  润新知