IOS成长中 C语言之指针二

来源:互联网 发布:3d服装设计软件 编辑:程序博客网 时间:2024/05/17 21:48

知识点概括:

                  1.结构体指针

                  2.条件编译

                  3.宏

#import #include相比,能防止重复导入,保证内容只复制一次

宏 只做替换(预编译器)

使用宏应注意的几个问题:
           (1)定义宏时最后不能加分号(分号也会替换内容的一部分)
           (2)参数要加括号
           (3)对于有参宏,宏名与括号之间不能加空格

结构体指针访问结构体成员,通过指向操作符,例如:结构体指针变量->结构体成员

条件编译,根据不同的条件来编译不同的代码,编译器会将原文件编译成二进制指令,存放在代码区,条件编译经常用来调试程序
  

//#import 与 #include 相比,能否防止重复导入,保证内容只复制一次//#import "A.h"//#include "A.h"//#include "A.h"//#include "A.h"//#ifndef LessonPointerHigher_A_h//#define LessonPointerHigher_A_h//int maxValue(int x, int y) {//    return x > y ? x : y;//}//#endif//#ifndef LessonPointerHigher_A_h//#define LessonPointerHigher_A_h//int maxValue(int x, int y) {//    return x > y ? x : y;//}//#endif//#ifndef LessonPointerHigher_A_h//#define LessonPointerHigher_A_h//int maxValue(int x, int y) {//    return x > y ? x : y;//}//#endif//宏 只做替换(预编译器)//命名规则: 纯大写 或者 k+驼峰(多个单词组成,每个单词的首字母大写)//#define 用来定义宏 COUNT 宏名//#define COUNT 10//#define SUM(A,B) (A * B)//使用宏应注意的几个问题://(1)定义宏时最后不能加分号(分号也会替换内容的一部分)//(2)参数要加括号//(3)对于有参宏,宏名与括号之间不能加空格//typedef struct student {//    char name[100];  //存储姓名//    char sex;       //存储性别//    int age;        //存储年龄//    float score;    //存储成绩//}Student;////typedef struct point {//    float x; //存储X的坐标//    float y; //存储Y的坐标//}CPoint;////#define AAAA

//结构体指针//    Student xiaoGuang = {"xiangguang", 20, 100};//    printf("%s\n", xiaoGuang.name);//    Student *pStu = NULL; //结构体指针变量//    pStu = &xiaoGuang;//    //结构体指针访问结构体成员,通过指向操作符,例如:结构体指针变量->结构体成员//    pStu->age = 18;//    printf("%d\n", pStu->age);//    strcpy(pStu->name, "xianghuang");//    printf("%s\n", pStu->name);////    pStu++; //增加的是整个结构体的大小//    //*pStu 和 结构体变量 xiaoGuang 的功能是一样的 都是获取到整个结构体的内容//    (*pStu).age = 88;//    printf("%d\n", (*pStu).age);//    (*pStu).score = 0;//    printf("%.1f\n", (*pStu).score);    //    CPoint a = {1, 3};//    CPoint b = {7, 11};//    CPoint *pA = NULL;//    CPoint *pB = NULL;//    pA = &a;//    pB = &b;//    float dx = (*pA).x - (*pA).x;//    float dy = (*pA).y - (*pB).y;//    float length = 0;  //存储距离//    length = sqrt(pow(dx, dy));//    printf("a---b = %.1f", length);        //定义学生结构体数组//    Student stu[5] = {//        {"xiaomeng", 'm', 18, 100},//        {"xiaolili", 'f', 20, 88},//        {"xiaoheng", 'm', 22, 98},//        {"xiaomian", 'm', 36, 60},//        {"xiaowang", 'f', 25, 77}//    };////    Student *pStu = NULL;////    pStu = stu;//////    pStu->score; //访问第一个学生的成绩//////    (pStu + 2)->name; //访问第三个学生的姓名;////    for (int i = 0; i < 5; i++) {////        printf("%s %d %.1f\n", (*(pStu + i)).name, (pStu + i)->age, (pStu + i)->score);////    }//    for (int i = 0; i < 5; i++) {//        if ((stu + i)->sex == 'm' || (stu + i)->sex == 'M') {//            strcat((stu + i)->name, "优");//            printf("%s\n", (stu + i)->name);//        }//    }    //    int a[COUNT] = {0};//    for (int i = 0; i < COUNT; i++) {//        a[i] = arc4random() % 21 + 20;//    }//    for (int i = 0; i < COUNT - 1; i++) {//        for (int j = 0; j < COUNT - 1 - i; j++) {//            if (a[j] > a[j + 1]) {//                int temp = a[j];//                a[j] = a[j + 1];//                a[j + 1] = temp;//            }//        }//    }//    for (int i = 0; i < COUNT; i++) {//        printf("%d ", a[i]);//    }    //    int sum = SUM(3 + 2, 10) * SUM(3 + 2, 10);//    printf("%d\n", sum);        //条件编译,根据不同的条件来编译不同的代码,编译器会将原文件编译成二进制指令,存放在代码区,条件编译经常用来调试程序    //条件编译 第一种格式    //#ifdef 标识符 代码段1; #else 代码段2; #endif    //如果标识符通过#define定义过,则编译代码段1,否则编译代码段2,#endif是条件编译的结束标志//#ifdef AAAA//    int a = 10;//#else//    int a = 20;//#endif//    printf("%d\n", a);    //条件编译第二种格式    //#ifndef 标识符 代码段1; #else 代码段2; #endif    //如果标识符没通过#define定义过,则编译代码段1,否则编译代码段2,#endif是条件编译的结束标志//#ifndef AAAA//    int b = 10;//#else//    int b = 20;//#endif//    printf("%d\n", b);    //条件编译低三种格式    //#if 常量表达式 代码段1 #else 代码段2 #dendif    //如果 常量表达式结果非0 编译器编译代码段1 否则编译代码段2//#if -1//    int c = 10;//#else //    int c = 20;//#endif//    printf("%d\n", c);    //    printf("%d", maxValue(3, 5));


0 0
原创粉丝点击