美文网首页
NDK启航篇——C语言基础(结构体补充)

NDK启航篇——C语言基础(结构体补充)

作者: 爺珍爱那颗心 | 来源:发表于2020-04-02 15:13 被阅读0次
    ndk
    NDK启航篇——C语言基础
    NDK启航篇——C语言基础(指针)
    NDK启航篇——C语言基础(函数指针)
    NDK启航篇——C语言基础(内存分配)
    NDK启航篇——C语言基础(字符串)
    NDK启航篇——C语言基础(结构体)

    继续昨天的内容,把结构体剩下的一点内容写完。

    结构体与动态内存分配

    struct Man{
      char *name;
      int age;
    }
    void main(){
    //malloc 返回值默认是void* 所以我们最好写成我们自己的类型
      struct Man *m_p = (struct Man*)malloc(sizeof(struct Man) * 10);
      struct Man *p = m_p;
      //赋值
      p->name = "Tom";
      p->age = 10;
      p++;
      p->name = "Jerry";
      p->age = 11;
      
      struct Man *loop_p = m_p;
      for(; loop_p <m_p +2;loop_p++){
        printf("%s,%d\n",loop_p->name,loop_p->age);
      }
      free(m_p);
      getchar();
    }
    

    typedef 类型取别名

    • 取别名便于使用
    • 不同的名称代表在做不同的事情
    • 不同情况下使用不同的别名
    • 书写简洁
    struct Man{
      char name [20];
      int age;
    };
    //Age是int类型的别名
    typedef int Age;
    //Ap是int类型指针的别名
    typedef int * Ap;
    typedef struct Man JavaMan;
    typedef struct Man * Jn;
    //结构体取别名
    typedef struct Woman{
      char name[20];
      int age;
    }W,*WP;//W是woman结构体的别名WP是woman结构体指针的别名
    void main (){
      int i =5;
      Ap p = &i;
      //结构体变量
      W w1 = {"Rose",20};
      //结构体指针
      WP wp1 = &w1;
      printf("%s,%d\n",w1.name,w1.age);
      printf("%s,%d\n",wp1->name,wp1->age);
      getchar();
    }
    

    结构体函数指针成员

    struct Girl{
      char name[20];
      int age;
      //函数指针
      void (*sayHi)(char*);
    };
    //Girl 结构体类似与Java中的类,name和age类似于属性,sayHi类似于方法
      void sayHi(char*text){
        MessageBoxA(0,"Hi","title",0);
    }
    void main(){
      struct Girl g1;
      g1.name = "Lucy";
      g1.sayHi = sayHi;
      g1.sayHi("hello");
      getchar();
    }
    
    • 和结构体同名的别名,省略写struct
    typedef struct Girl{
      char name[20];
      int age;
      //函数指针
      void (*sayHi)(char*);
    }Girl;
    //Girl 结构体类似与Java中的类,name和age类似于属性,sayHi类似于方法
      void sayHi(char*text){
        MessageBoxA(0,"Hi","title",0);
      }
    //Girl结构体指针取别名GirlP
    typedef Girl* GirlP;
    //改名
    void rename(GirlP gp1){
      gp1 -> name = "Lily";
    }
    void main(){
      Girl g1 = {"Lucy",18,sayHi};
      GirlP gp1 = &g1;
      gp1->sayHi("Byebye!");
      //传递指针,改名
      rename(gp1);
      getchar();
    }
    
    • 字符串数组赋值,只能在声明时赋值,但可以修改内容
    char a[10] = "Happy";
    //a = "Sad";不行
    //可以修改内容
    a[0]= "F";
    //重新赋值
    strcpy(a,"Sad");
    //字符指针,可以多次赋值不同字符串
    char *b = "Friend";
    b = "Family";
    b++;
    //*b = 'H';//不能修改字符内容
    

    结构体的知识点到这里就写完了,明天写联合体,欲速则不达,慢慢来不着急。

    相关文章

      网友评论

          本文标题:NDK启航篇——C语言基础(结构体补充)

          本文链接:https://www.haomeiwen.com/subject/jrtzuhtx.html