zoukankan      html  css  js  c++  java
  • 指针的使用

    学习链接:

    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);

  • 相关阅读:
    Repeater嵌套绑定Repeater
    第一章 JavaScript概述
    一、mono for android学习:什么是mono for android(使用C#开发android)
    二、mono for Android学习:安装IDE 以及 可能遇到问题
    第三章 JavaScript 数据类型和值
    计算机是如何启动的?
    TSQL连接查询,基础连接理解
    三、mono for android 学习:参考书籍
    第二章 JavaScript 词法结构
    四、mono for android学习:在monodevelop与Visual Studio上的示例
  • 原文地址:https://www.cnblogs.com/y15821933792/p/8964730.html
Copyright © 2011-2022 走看看