• ios指针第二天


    //
    //  main.m
    //  LessonPointerPro
    ////  Copyright (c) 2015年 池海涛. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "Function.h"
    #define PI 3.1415926
    #define kMul(A,B) (A)*(B)
    
    
    ////条件编译
    ////形式1
    //#ifdef PI
    //#define kPPPI 0
    //#else
    //#define kPPPPI 1
    //#endif
    //
    ////形式2
    //#ifndef kP
    //
    //#define kP 3
    //
    //#else
    //
    //#define kP 4
    //
    //#endif
    //
    ////形式3
    //#if 0
    //
    //#define kRong 0
    //
    //#else
    //
    //#define kRight 1
    //
    //#endif
    
    
    
    
    
    
    //预编译指令
    //以#开头的叫预编译指令:预编译时期做一些文本及代码的替换工作
    //PI 代表宏名,3.14是预编译时期会被替换的内容
    int main(int argc, const char * argv[]) {
    
    //    //指针,指针变量
    //    int a = 10;
    //    int b = 6;
    //    change(&a,&b);
    //    //指针与函数
    //    //练习:交换两个数的值
    //    printf("a = %d,b = %d",a,b);
        /**
         *  
         
         int a[5] = {0};
         int count = sizeof(a) / sizeof(a[0]);
         
         getArray(a,count);
         */
       // char strArray[4][20] = {"iPhone", "iPad", "ipod", "iWatch"};
        
        //指针数组
        /**
         *  字符串
         char *strPinter[4] = {"iPhone", "iPad", "ipod", "iWatch"};
         printStr(strPinter,4);
         sortStrArray(strPinter,4);
         printStr(strPinter,4);
         */
        
        //指针数据类型:Student *
        //指针变量 :P
        //初值:&student,存储的是student的地址
        //指针变量 p 所占的字节: 8个字节
    //
    //    Student student = {"chihaitao",'m',23,100};
    //    
    //    Student *p = &student;
        
        //通过指针访问结构体成员
        /**
         *  *p 相当于student结构体变量
         */
    //    printf("%s 
    ",student.name);
    // 
    //    printf("%s 
    ",(*p).name);
        
        /**
         *  方式2
         CPoint c1 = {4,5};
         CPoint c2 = {7,1};
         
         CPoint *p1 = &c1;
         CPoint *p2 = &c2;
         
         printf("%f    ", qiujuli(p1,p2));
         // printf("%s 
    ",p->name);//通过指针,直接进行访问, ->指向操作符
         //使用->输出结构体变量student中的所有成员变量
         */
        /**
         *  <#Description#>
         Student student = {"chihaitao",'m',23,100};
         Student stuArray[5] = {
         {"chichi",'m',25,99},
         {"haihai",'w',22,98},
         {"taotao",'w',23,97},
         {"niuniu",'w',22,98},
         {"bibi",'w',23,97},
         };
         //->就是指针操作    (指针)->(结构体成员)
         Student *stu = stuArray;
         //字符串不能直接赋值,字符串指针能赋值
         (stu+4)->name = "fengfeng";
         (stu+1)->age = 120;
         printf("%s",(stu + 4)->name);
         printf("%d",(stu+1)->age);
         printf("%d",stuArray[4].age);
         //printf("%s",m1->name);
         printf("%f",stu[4].score);
         printf("%p",(stu + 4));
         printf("%p",&stuArray[4]);
         //按学生年龄升序排列
         for (int i = 0; i < 5 -1; i++) {
         for (int j = 0;j < 5 - 1 - i; j++) {
         if ((stu + j)->age > (stu+j + 1)->age) {
         Student temp = *(stu + j);
         *(stu + j) = *(stu + j + 1);
         *(stu + j + 1)=temp;
         }
         }
         }
         
    
         
         */
        
        
        //定义宏
        //普通宏
        //PI 代表宏名
        
        int mul = kMul(3 + 1, 5);
        printf("mul = %d
    ",mul);
    
        /**
         * 宏与函数的区别
         1.宏是在预编译时期进行替换的内容,不进行任何的逻辑检测,只是简单的赋值而已,运行速度比函数快
         2.宏定义十不考虑参数的类型
         3.参数宏在定义时记得多加括号
         4.参数宏在使用时会再目标文件中村在多个副本,会增加目标文件的大小
         
         */
    #ifdef PI   //如果定义了 PI
        printf("PI已经定义过了
    ");
    #else
        printf("PI没有定义
    ");
    #endif
    #ifndef PI  //如果没有定义 PI
        printf("PI这个宏没有定义
    ");
    #else
        printf("早就定义过了
    ");
    #endif
        
    #if 1  //和条件判断if else 用法一样
        printf("优衣库被查了");
    #else
        printf("你说啥 听不懂
    ");
    #endif
        
        
        return 0;
    }

    //--------Function.h

    //
    //  Function.h
    //  LessonPointerPro
    //
    //  Created by laouhn on 15/7/27.
    //  Copyright (c) 2015年 池海涛. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    struct student{
        char *name;
        char sex;
        int age;
        float score;
    };
    
    typedef struct student Student;
    
    typedef struct{
        char *name;
        char sex;
        int age;
        float score;
    } Student1;
    
    struct cpoint{
        float x;
        float y;
    };
    typedef struct cpoint CPoint;
    
    void change(int *,int *);
    
    void getArray(int *,int);
    
    void print(int *,int);
    
    void sortArray(int *,int);
    
    void printStr(char *[],int);
    void sortStrArray(char *[],int);
    
    
    float qiujuli(CPoint *,CPoint *);

    //Function.m

    //
    //  Function.m
    //  LessonPointerPro
    //
    //  Created by laouhn on 15/7/27.
    //  Copyright (c) 2015年 池海涛. All rights reserved.
    //
    
    #import "Function.h"
    
    void change(int *a,int *b)
    {
        int temp = *a;
         *a = *b;
        *b = temp;
    }
    void getArray(int *p,int count)
    {
        
        for (int i = 0; i < count; i++) {
            *(p + i) = arc4random() % (100 - 10 + 1) + 10;
        }
        print(p,count);
        sortArray(p, count);
        print(p, count);
    }
    void print(int *a,int count)
    {
        for (int i = 0; i < count; i++) {
            printf("%d ",*(a+i));
        }
        printf("
    ");
    }
    
    void sortArray(int *a,int count)
    {
        for (int i = 0; i < count - 1; i++) {
            for (int j = 0; j < count - i -1; j++) {
                if (*(a + j) > *(a + j + 1)) {
                    int temp = *(a + j);
                    *(a + j) = *(a + j +1);
                    *(a + j + 1) = temp;
                }
            }
        }
    }
    
    
    
    
    void printStr(char *b[],int count)
    {
        for (int i = 0; i < count; i++) {
            printf("%s ",*(b + i));
        }
    }
    void sortStrArray(char *str[],int count)
    {
        for (int i = 0; i < count - 1; i++) {
            for (int j = 0; j < count - 1 - i; j++) {
                if (strcmp(str[j],str[j + 1] ) > 0) {
                    char *temp = str[j];
                    str[j] = str[j + 1];
                    str[j + 1] = temp;
                }
            }
        }
    }
    
    
    float qiujuli(CPoint *a,CPoint *b){
    
        float x = fabsf(a->x - b->x);
        float y = fabsf(a->y - b->y);
        return sqrtf(x*x + y*y);
    }
  • 相关阅读:
    MongoDB下配置用户权限
    (CF)Codeforces445A DZY Loves Chessboard(纯实现题)
    C语言概述
    C#中值类型和引用类型的差别浅记
    Qt5官方demo解析集30——Extending QML
    汉澳sinox通过ndis执行windows驱动程序
    linux设备驱动归纳总结(三):4.ioctl的实现【转】
    linux设备驱动归纳总结(三):3.设备驱动面向对象思想和lseek的实现【转】
    linux设备驱动归纳总结(三):2.字符型设备的操作open、close、read、write【转】
    linux设备驱动归纳总结(三):1.字符型设备之设备申请【转】
  • 原文地址:https://www.cnblogs.com/wohaoxue/p/4688104.html
Copyright © 2020-2023  润新知