长路漫漫,唯剑作伴--基础

一、结构体

结构体定义

    struct stu{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在学习小组
        float score;  //成绩
    }

结构体变量

struct stu stu1, stu2;
    struct stu{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在学习小组
        float score;  //成绩
    } stu1, stu2;
    struct{  //没有写 stu
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在学习小组
        float score;  //成绩
    } stu1, stu2;

结构体访问

    #include <stdio.h>
    int main(){
        struct{
            char *name;  //姓名
            int num;  //学号
            int age;  //年龄
            char group;  //所在小组
            float score;  //成绩
        } stu1;
        //给结构体成员赋值
        stu1.name = "Tom";
        stu1.num = 12;
        stu1.age = 18;
        stu1.group = ‘A‘;
        stu1.score = 136.5;
        //读取结构体成员的值
        printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", stu1.name, stu1.num, stu1.age, stu1.group, stu1.score);
        return 0;
    }

结构体赋值

    struct{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在小组
        float score;  //成绩
    } stu1, stu2 = { "Tom", 12, 18, ‘A‘, 136.5 };

二、结构体数组

    struct stu{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在小组
        float score;  //成绩
    }class[5];
    struct stu{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在小组
        float score;  //成绩
    }class[5] = {
        {"Li ping", 5, 18, ‘C‘, 145.0},
        {"Zhang ping", 4, 19, ‘A‘, 130.5},
        {"He fang", 1, 18, ‘A‘, 148.5},
        {"Cheng ling", 2, 17, ‘F‘, 139.0},
        {"Wang ming", 3, 17, ‘B‘, 144.5}
    };
    struct stu{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在小组
        float score;  //成绩
    }class[] = {
        {"Li ping", 5, 18, ‘C‘, 145.0},
        {"Zhang ping", 4, 19, ‘A‘, 130.5},
        {"He fang", 1, 18, ‘A‘, 148.5},
        {"Cheng ling", 2, 17, ‘F‘, 139.0},
        {"Wang ming", 3, 17, ‘B‘, 144.5}
    };

三、结构体和指针

    struct stu{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在小组
        float score;  //成绩
    } stu1 = { "Tom", 12, 18, ‘A‘, 136.5 };
    //结构体指针
    struct stu *pstu = &stu1;
    struct stu{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在小组
        float score;  //成绩
    } stu1 = { "Tom", 12, 18, ‘A‘, 136.5 }, *pstu = &stu1;
    #include <stdio.h>
    int main(){
        struct{
            char *name;  //姓名
            int num;  //学号
            int age;  //年龄
            char group;  //所在小组
            float score;  //成绩
        } stu1 = { "Tom", 12, 18, ‘A‘, 136.5 }, *pstu = &stu1;
        //读取结构体成员的值
        printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", (*pstu).name, (*pstu).num, (*pstu).age, (*pstu).group, (*pstu).score);
        printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", pstu->name, pstu->num, pstu->age, pstu->group, pstu->score);
        return 0;
    }

四、枚举

    enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun };
    enum week a = Mon, b = Wed, c = Sat;

五、C++结构体

     //定义一个结构体,类型为struct Student
2      struct  Student
3      {
4          string name;
5          double eng;
6          double ch;
7      };
8
9      //定义了一个结构体,类型为struct Student;且定义了一个结构体实例,名叫Stu
10      struct  Student
11      {
12          string name;
13          double eng;
14          double ch;
15      }Stu;
16
17      //定义了无名的结构体,且定义了一个结构体实例,名叫Stu
18      struct
19      {
20          string name;
21          double eng;
22          double ch;
23      }Stu;
24
25      //重定义结构体,类型为struct Student 或者是Stu
26      typedef struct  Student
27      {
28          string name;
29          double eng;
30          double ch;
31      }Stu;
32
33      //重定义结构体,类型为Stu
34      typedef struct
35      {
36          string name;
37          double eng;
38          double ch;
39      }Stu;
时间: 2024-10-31 06:09:43

长路漫漫,唯剑作伴--基础的相关文章

长路漫漫,唯剑作伴--Core Animation优化

一.简介 当App发展到一定的规模,性能优化就成为必不可少的一点.但是很多人,又对性能优化很陌生,毕竟平常大多时间都在写业务逻辑,很少关注这个.最近在优化自己的项目,也收集了很多资料,这里先浅谈一下使用Instruments中CoreAnimation优化收获的经验以及总结,这是第一篇,后续会更新Timer Profiler,Leaks等其他优化工具的具体用法. 二.准备工作 在性能优化中一个最具参考价值的属性是FPS:全称Frames Per Second,其实就是屏幕刷新率,苹果的iphon

长路漫漫,唯剑作伴--Core Animation

一.UIView和CALayer 关系 在创建UIView对象时,UIView内部会自动创建一个层(即CALayer对象),通过UIView的layer属性可以访问这个层.当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的层上,绘图完毕后,系统会将层拷贝到屏幕上,于是就完成了UIView的显示. 换句话说,UIView本身不具备显示的功能,是它内部的层才有显示功能. 两者都有树状层级结构,layer 内部有 SubLayers,View 内部有

长路漫漫,唯剑作伴--MVVM

开篇 MVC Model-View-Controller是一个用来组织代码的权威范式.Apple甚至是这么说的.在MVC下,所有的对象被归类为一个model,一个view,或一个controller.Model持有数据,View显示与用户交互的界面,而View Controller调解Model和View之间的交互. MVVM MVVM的出现主要是为了解决在开发过程中Controller越来越庞大的问题,变得难以维护,所以MVVM把数据加工的任务从Controller中解放了出来,使得Contr

长路漫漫,唯剑作伴--胡乱来一套

//第一种方法 NSDate *start = [NSDate date]; //2.根据url地址下载图片数据到本地(二进制数据) NSData *data = [NSData dataWithContentsOfURL:url]; NSDate *end = [NSDate date]; NSLog(@"第二步操作花费的时间为%f",[end timeIntervalSinceDate:start]); //第二种方法 CFTimeInterval start = CFAbsolu

长路漫漫,唯剑作伴--问题答案

一.使用atomic一定是线程安全的吗? 回答 不是 对于atomic的属性,系统生成的 getter/setter 会保证 get.set 操作的完整性,不受其他线程影响.比如,线程 A 的 getter 方法运行到一半,线程 B 调用了 setter:那么线程 A 的 getter 还是能得到一个完好无损的对象. 对于nonatomic的属性,当其中一个线程正在改写某属性值的时候,另外一个线程也许会突然闯入,把尚未修改好的属性值读取出来.发证这种情况时,线程读取到的属性值肯能不对. 当使用a

长路漫漫,唯剑作伴--loadView、viewDidLoad及viewDidUnload的关系

一.loadView 什么时候被调用? 每次访问UIViewController的view(比如controller.view.self.view)而且view为nil,loadView方法就会被调用. 有什么作用? loadView方法是用来负责创建UIViewController的view 默认实现是怎样的? 它会先去查找与UIViewController相关联的xib文件,通过加载xib文件来创建UIViewController的view 如果在初始化UIViewController指定了

长路漫漫,唯剑作伴--Automatic Reference Counting

一.简介 ARC,自动引用计数,是指iOS的内存管理使用引用计数的技术. 在OC中采用Automatic Reference Counting的机制,让编译器进行内存管理.在新一代的Apple LLVM编译器中设置ARC为有效状态,就不用再次键入retain.release代码,这在降低程序崩溃.内存泄漏等风险的同时,很大程度上减少了开发程序的工作量.编译器完全清楚目标对象,并能立刻释放那些不再被使用的对象(有待斟酌).如此一来,应用程序将具有可预测性,且运行流畅,速度也将大幅提升.(摘自苹果官

长路漫漫,唯剑作伴--小技巧

一.UIImageView添加圆角 第一种方法:通过设置layer的属性,但是最影响性能 UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)]; //只需要设置layer层的两个属性 //设置圆角 imageView.layer.cornerRadius = imageView.frame.size.width / 2; //将多余的部分切掉 imageView.lay

长路漫漫,唯剑作伴--Life Circle

一.load 和 initialize load 在load中使用其他类是不安全的,因为其它类不一定加载完毕: load方法不遵循继承规则,也就是说,如果某个类没有实现load方法,那么不管这个类的所有超类是否实现了这个方法,这个类都不会调用load 如果类和分类都实现了load方法,两个类都会执行load,类先执行,分类后执行: 实现了load方法的这个类,不管在程序运行中是否用到,程序在启动时都会把每个类中的load方法调用一次(这个和initialize不同). initialize 它是