前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NDK启航篇——C语言基础(结构体补充)

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

作者头像
longzeqiu
发布2020-04-09 11:32:09
3700
发布2020-04-09 11:32:09
举报
文章被收录于专栏:Android小知识

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

结构体与动态内存分配

代码语言:javascript
复制
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 类型取别名

  • 取别名便于使用
  • 不同的名称代表在做不同的事情
  • 不同情况下使用不同的别名
  • 书写简洁
代码语言:javascript
复制
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();
}

结构体函数指针成员

代码语言:javascript
复制
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
代码语言:javascript
复制
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();
}
  • 字符串数组赋值,只能在声明时赋值,但可以修改内容
代码语言:javascript
复制
char a[10] = "Happy";
//a = "Sad";不行
//可以修改内容
a[0]= "F";
//重新赋值
strcpy(a,"Sad");
//字符指针,可以多次赋值不同字符串
char *b = "Friend";
b = "Family";
b++;
//*b = 'H';//不能修改字符内容

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 结构体与动态内存分配
  • typedef 类型取别名
  • 结构体函数指针成员
  • 结构体的知识点到这里就写完了,明天写联合体,欲速则不达,慢慢来不着急。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档