zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    2018年度总结
    SQL特殊comment语法
    mysql 主从复制change master to
    mysql 主从复制参数slave_net_timeout
    show master status, show slave status中的Executed_Gtid_Set
    mysql重复start slave、stop slave测试
    golang database sql DSN (Data Source Name)中的timeout, readTimeout
    mysql show master status为空值
    Linux 建立 TCP 连接的超时时间分析(解惑)
    golang 原子操作函数
  • 原文地址:https://www.cnblogs.com/songshu-yilia/p/3912449.html
Copyright © 2011-2022 走看看