• oc之指针


    1、基础

    * : 简接寻址运算符

    & : 地址运算符

    int count = 10;  //定义变量count,赋初始值10;

    int *intPtr;        //*定义变量inPtr是int的指针类型

    intPtr = &count; //表达式&count表示变量count的指针,将它赋值给指针变量intPtr

    int x = *intPtr;   //讲intPtr间接指向的值赋给变量x。 如果改变x的值,那么count会发生变化吗? x=12;count=?

    代码:

    #import<Foundation/Foundation.h>

    int main(int argc, char *argv[])

    {

      @autoreleasepool

      {

        char c = 'Q';

        char *charPtr = &c;

        NSLog(@"%c %c", c, *charPtr);

        c='/';

        NSLog(@"%c %c", c, *charPtr);

        *charPtr='(';

        NSLog(@"%c %c", c, *charPtr);  

      }

      return 0;

    }

    输出结果:

    Q Q

    / /

    ( (

    2、指针和结构  

    struct date

    {

      int month;

      int day;

      int year;

    };

    struct date todayDate;

    struct date *datePtr;

    datePtr=&todayDate;

    (*datePtr).day=21;//将datePtr指向的date结构中的day成员设置为21.   

    -> : 结构指针运算符

    (*x).y 可以表示为 x->y

    datePtr->day=21;

    (float)l/s--->类型转换的优先级比运算符的优先级高;

    (*datePtr).day=21---->结构成员节点运算符(.)比简接寻址运算符(*)的优先级高

    3、指针、方法和函数

    #import<Foundation/Foundation.h>

    void exchange(int *pint1, int *pint2)

    {

      int temp;

      temp = *pint1;

      *pint1 = *pint2;

      *pint2 = temp;

    }

    int main(int argc, char *argv[])

    {

      @autoreleasepool

      {

        void exchange(int *pint1, int *pint2);

        int i1=5, i2=66, *p1=&i1, *p2=&i2;

        NSLog(@"i1=%i ,i2=%i", i1, i2);  //输出结果:5,66

        exchange(p1, p2);

        NSLog(@"i1=%i ,i2=%i", i1, i2);  //输出结果:66,5

        exchange(&i1, &i2);

        NSLog(@"i1=%i ,i2=%i", i1, i2);  //输出结果:5,66

        exchange(*p1,*p2);

        NSLog(@"i1=%i ,i2=%i", i1, i2);  //输出结果:?????   

      }

      return 0;

    }

    4、指针和数组

    1) .定义一个指向100个整数的数组valuesd的指针: int *valuesPtr;

    2) .将valuesPtr设为指向数组values的第一个元素的指针:(1)valuesPtr=values; //oc编译器将没有下标的数组名称看做是指向数组的第一个元素的指针

                                 (2)valuesPtr=&values[0];

    3) .通过valuesPtr引用values[3] : *(valuesPtr+3);    

    4) .讲values[10]设为27: values[10]=27;  *(valuesPztr+10)=27;

    5) .可运用自增和自减运算符: char *p; ++p;--p;

  • 相关阅读:
    SQL复制表
    文件流 修改二进制文件
    C#代码开启或关闭window service
    程序员之间的相处
    .NET实现图片下载(后台)
    当要存入数据的数据为null时 必须转换成DBNull.Value
    Maven第三篇【Maven术语、pom.xml介绍】
    Maven第二篇【Idea下使用Maven】
    Maven第一篇【介绍、安装、结构目录】
    SSM整合开发
  • 原文地址:https://www.cnblogs.com/songshu-yilia/p/3912449.html
Copyright © 2020-2023  润新知