设为首页 加入收藏

TOP

C语言基础学习之结构体与指针实例(一)
2018-07-22 06:05:32 】 浏览:323
Tags:语言基础 习之 结构 指针 实例

C语言基础学习之结构体与指针实例

#define _CRT_SECURE_NO_WARNINGS

#include
  
   
#include
   
     #include
    
      #include
     
    
   
  
//结构体是一种构造数据类型
//把不同的数据类型整合起来成为一种自定义的数据类型
/*struct Man
{
 char* name;
 int age;
};

void main(){
 //1.构造方式赋值
 struct Man m1 = { "jack", 20 };

 //2.赋值
 struct Man m2;
 m2.age = 30;
 m2.name = "tom";

 printf("%s,%d\n", m2.name, m2.age);

 getchar();
}*/
//结构体的几种写法
/*struct Man
{
 char name[20];
 int age;
} m1, m2 = { "jack", 20 };

void main(){
 //对于char数组的赋值要使用strcpy函数,这个函数是string.h中的
 strcpy(m1.name, "tom");
 m1.age = 30;

 printf("%s,%d \n", m1.name, m2.age);

 getchar();
}*/
//匿名结构体
/*struct {
 char* name;
 int age;
} m1;

void main(){
 m1.age = 30;
 m1.name = "tom";

 printf("%s,%d\n", m1.name, m1.age);

 getchar();
}*/
//结构体嵌套
/*struct Teacher{
 char* name;
};

struct Student{
 char* name;
 int age;
 //内部嵌套Teacher结构体
 struct Teacher t;
};

void main(){
 //赋值
 struct Student s1 = { "tom", 20, { "jack" } };
 //依次输出学生的姓名,年龄,老师姓名
 printf("%s,%d,%s\n", s1.name, s1.age, s1.t.name);

 getchar();
}*/
//结构体嵌套2
/*struct Student{
 char* name;
 int age;
 struct Teacher{
  char *name;
 } t;
};

void main(){
 //依次赋值
 struct Student s1 = { "tom", 20,"rose"};
 //依次输出学生的姓名,年龄,老师姓名
 printf("%s,%d,%s\n", s1.name, s1.age,s1.t.name);
 getchar();
}*/
//结构体和指针
/*struct Student{
 char* name;
 int age;
};

void main(){
 struct Student s1 = { "tom", 16 };

 struct Student* p = &s1;
 //这三种表示方法相同
 printf("%s,%d \n", s1.name, s1.age);
 printf("%s,%d \n",(*p).name,(*p).age);
 //“->”(箭头)是“(*p).”简写形式
 printf("%s,%d \n",p->name,p->age);
 getchar();
}*/

//指针数组及其遍历
/*struct Student{
 char* name;
 int age;
};

void main(){
 //结构体数组
 struct Student stArr[] = { { "tom", 20 },{"rose",16} };

 //遍历
 struct Student* p=&stArr;
 //第一种遍历
 for (; p < stArr+2; p++)
 {
  printf("%#x\n",p);
  printf("%s,%d\n",(*p).name,(*p).age);
  printf("%s,%d\n", p->name, p->age);
 }
 //第二种遍历
 int i = 0;
 for (; i
  
   
//结构体的大小(字节大小)
/*struct Man{
 int age;
 double weight;
};

void main(){
 struct Man m1 = { 20, 89.0 };
 //结构体变量的大小,必须是最宽基本数据类型的整数倍
 //提升读取的效率
 printf("%#x,%d",&m1,sizeof(m1));
 getchar();
}*/
//结构体和动态内存分配
/*struct Man{
 char* name;
 int age;
};

void main(){
 //动态分配10个man结构体大小
 struct Man* m_p=(struct Man*)malloc(sizeof(struct Man) * 10);

 struct Man* p = m_p;

 p->name = "rose";
 p->age = 16;

 p++;

 p->name = "jack";
 p->age = 20;

 //遍历数组
 struct Man* loop_mam = m_p;
 for (; loop_mam < m_p + 2; loop_mam++){
  printf("%s,%d \n", loop_mam->name, loop_mam->age);
 }
 //释放指针
 free(m_p);
 getchar();
}*/
//typedef 类型取别名
//1.不同名称代表在干不同的事情typedef int jint;  
//2.不同情况下,使用不同的别名
//#if defined(__cplusplus)
//typedef _JNIEnv JNIEnv;
//typedef _JavaVM JavaVM;
//3.书写简洁

//给类型取别名
//Age是int的别名
/*typedef int Age;
//Ap是int类型指针的别名
typedef int* Ap;

struct Man{
 char* name;
 int age;
};
/
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇c语言使用librdkafka库实现kafka.. 下一篇C语言基础学习之基本数据类型_输..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目