zoukankan      html  css  js  c++  java
  • iOS学习笔记---c语言第九天

    高级指针

    指向结构体变量的指针,称为结构体指针

    可以使用->指向内容。

    %p打印地址

    void pLenth(cPoint *p1,cPoint *p2)

    //求两点间的距离  用的开方函数sqrt()和平方函数pow(,)

    {

        float a = sqrt(pow((p1->x-p2->x), 2)+pow((p1->y-p2->y), 2));

        printf("两点距离为%.2f ",a);

    }

    //main.m中代码
    #import <Foundation/Foundation.h>
    #import "Lesson.h"
    #import "Cpoint.h"
    int main(int argc, const char * argv[])
    {
    
        Student stu = {"xiao wang tou",18,32,'m'};
        Student *p = &stu;
        p->name[0] -= 32;//找到name第一个元素变大写
        printf("%s
    ",p->name);
        //循环把空格字符变下划线
        for (int i = 0; i<strlen(p->name); i++) {
            if (p->name[i]==' ') {
                p->name[i]='_';
            }
        }
        printf("%s",p->name);
    //    strcpy((*p).name, "xiaoliu");
    //    strcpy(p->name, "hello");
    //    printf("%lu %lu %s
    r",sizeof(stu),sizeof(p),(*p).name);
    //    printf("%p %p",&(p->name),p);
    //    Cpoint point1 = {1.25,2.36};
    //    Cpoint *q = &point1;
    //    printf("%.2f %.2f
    ",q->x,q->y);//两种形式
    //    printf("%.2f %.2f",(*q).x,(*q).y);
    //    Cpoint point2[]={{5,6},{8,10}};
    //    Cpoint *r = point2;
    //    float num=sqrt((r->x-(r+1)->x)*(r->x-(r+1)->x)+(r->y-(r+1)->y)*(r->y-(r+1)->y));
    //    printf("%.2f",num);
    //    mysqrt(point2);
        return 0;
    }
    //Cpoint.h中代码
    typedef struct cpoint{
        float x;
        float y;
    }Cpoint;
    void mysqrt(Cpoint point2[]);
    //Cpoint.m中代码
    #import "Cpoint.h"
    void mysqrt(Cpoint point2[]){
    
        Cpoint *r = point2;
        float num=sqrt((r->x-(r+1)->x)*(r->x-(r+1)->x)+(r->y-(r+1)->y)*(r->y-(r+1)->y));
        printf("%.2f",num);
    }
    //Lesson.h中代码
    //创建一个学生的结构体
    typedef struct student{
        char name[20];//姓名
        int num;      //学号
        int age;      //年龄
        char sex;     //性别
    }Student;

    结构体数组。

    stu stus[3] = {0};

    stu *p = &stus;

    *(p+1).num  第二个学生的num

     找出性别为男的学生,成绩加10,超过100写100

    在student结构体中加score成员

    //Lesson.h文件
    typedef struct student{
        char name[20];//姓名
        int num;      //学号
        int age;      //年龄
        char sex;     //性别
        float score;  //分数
    }Student;
    
    void manscore(Student *stud,int count);
    //Lesson.m文件
    //性别为男的学生成绩加10,如果超过100,成绩为100
    void manscore(Student *stud,int count)
    {
        for (int i=0; i<count; i++) {
            if ((stud+i)->sex=='m') {
                (stud+i)->score+=10;
                if ((stud+i)->score>=100) {
                    (stud+i)->score=100;
                }
            }
            
            printf("%.2f ",(stud+i)->score);
        }
    }
    //主函数
       Student arr[3]={{"xiaoming",1,18,'m',95},{"xiaobai",2,20,'f',90},{"xiaoxiao",3,19,'m',56}};
        Student *p = arr;
    //     for (int i=0; i<3; i++) {
    //    if ((p+i)->sex=='m') {
    //        (p+i)->score+=10;
    //        if ((p+i)->score>=100) {
    //            (p+i)->score=100;
    //        }
    //    }
    //   
    //        printf("%.2f ",(p+i)->score);
    //    }
        manscore(p, 3);

    三、预编译指令

    宏定义     实际开发中用的比较多

    预编译时进行替换(编译前)

    宏名命名规则:   纯大写  或者   k+驼峰

    #define kMax 100

    eg:MAX 或者  kMax

    宏是符号常量不是变量   制作替换不做语法检查  后面没有分号;

    带参数的宏

    #define MUL(A,B) ((A)*(B))

    #define kSum(A,B) A*B
    
    int main(int argc, const char * argv[])
    {
        int a = kSum(3+5,6-3);//3+5*6-3
        printf("%d",a);//输出30

     条件编译

    作用:按不同的条件,编译不同的代码。

    条件编译  有三种形式

    1.#ifdef  标识符

    代码段1

    #else

    代码段2

    #endif

        //如果定义了宏AAA
    #ifdef AAA
        printf("这段代码被编译");
    #else
        printf("这段代码才被编译");
    #endif//编译结束以#endif结束

    2.#ifndef 标识符

    代码段1

    #else

    代码段2

    #endif

    3.#if  常量表达式

    代码段1

    #else

    代码段2

    #endif

  • 相关阅读:
    请求被中止: 未能创建 SSL/TLS 安全通道,设置 TLSv1.2和TLSv1.1版本 .基础链接已经关闭,发送时发生错误
    javascript中使用new与不使用实例化对象的区别
    Asp.net MVC 如何防止CSRF攻击
    httpModules 不起作用 modules 不起作用 血泪经验
    ASP.NET Core 中间件 中间件(Middleware)和过滤器(Filter)的区别
    ASP.NET Core开发-读取配置文件Configuration appsettings.json
    get、put、post、delete含义与区别
    postman发送json格式的post请求
    公钥,私钥和数字签名这样最好理解
    Java调用DLL有多种方式,常用的方式有JNative、JNA、JNI等。
  • 原文地址:https://www.cnblogs.com/limicheng/p/3794310.html
Copyright © 2011-2022 走看看