- 1.review
- 2.typedef深入分析
- 3.结构体初始化
- 4.结构体赋值传参作返回值
- 5.结构体数组及应用
- 6.结构体嵌套与结构体大小
- 7.结构体中指针使用注意事项
- 8.基于结构体栈的实现与类型大总结
- 9.共用体基础与提高
1.review
2.typedef深入分析
1,先用原类型定义变量;
2,在定义前加typedef;
3,将原变量的名字,改成你需要的类型名.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
//typedef typedefine typerename
//typedef 对现有类型,取别名.不能创造新的类型
//typedef 是一个常用于对结构体取别名的关键字.更好用的结构体
typedef char int8;
typedef short int16;
typedef int int32;
typedef long long int64;
typedef int ARRAY[10];
typedef struct stu
{
char name[40];
int num;
char age;
float score;
}Stu;
int main(int argc,char *argv[])
{
// 处理由不同类型成员构成的构造类型,要采用结构体的方式
struct stu s1;
int8 i8;
int16 i16;
int32 i32;
int64 i64;
int arr[10];
printf("sizeof(arr) = %d\n sizeof(int[10]) = %d\n",sizeof (arr),sizeof(int[10]));
ARRAY arr2;
printf("sizeof(arr2) = %d\n ",sizeof (arr2));
Stu s1;
Stu s2;
Stu s3;
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#if 0
typedef typerename只有对己有类型,取别名。
1,用现有类型生成变量。
2,在变量定义之前加typedef。
3,将定义的变量换成,你要的别名。
typedef构成的c语言语句参与编译
#define构成的语句,在预处理阶段处理完毕
#define DINT int 在预处理阶段,把DINT换成int
#endif
#define major_double double
int main(int argc,char *argv[])
{
typedef int major_int;
major_int a,b,c,d;
printf("sizeof(int) = %d sizeof(int) = %d\n",sizeof (int),sizeof (major_int));
typedef int major_array[10];
major_array arr;
printf("sizeof(major_array) = %d sizeof(arr) = %d\n",sizeof (major_array),sizeof (arr));
for (int i=0;i<10;i++) {
arr[i] = i;
printf("%d\n",arr[i]);
}
major_double ddd;
printf("sizeof(major_double) = %d sizeof(ddd) = %d\n",sizeof (major_double),sizeof (ddd));
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#if 0
typedef typerename只有对己有类型,取别名。
1,用现有类型生成变量。
2,在变量定义之前加typedef。
3,将定义的变量换成,你要的别名。
typedef构成的c语言语句参与编译
#define构成的语句,在预处理阶段处理完毕
#define DINT int 在预处理阶段,把DINT换成int
#endif
#define DpChar char *;
int main(int argc,char *argv[])
{
char *p,q;
printf("sizeof(p) = %d sizeof(q) = %d\n",sizeof (p),sizeof (q));
typedef char *pChar;
pChar a,b;
printf("sizeof(a) = %d sizeof(b) = %d\n",sizeof (a),sizeof (b));
#define Dpchar char*
Dpchar m,n;
printf("sizeof(m) = %d sizeof(n) = %d\n",sizeof (m),sizeof (n));
return 0;
}
3.结构体初始化
初始化是一种特殊的语法跟赋值不等价
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
struct stu
{
char name[100];
int num;
char sex;
float score;
};
//初始化是一种特殊的语法跟赋值不等价
//凡是基本类型,既可以在定义的时侯初始化,也可以先定义再赋值。
//凡是构造类型,要么在定义的时候实始化,不可以先定义再以实始化的方式赋值
int main(int argc,char *argv[])
{
struct stu s = {
"major",1001,'m',100};
strcpy(s.name,"major_S");//错误:s.name="major_s";
s.num = 1002;
s.sex='m';
s.score=99;
printf(" name:%s\n num:%d\n sex:%c\n score:%f\n ",s.name,s.num,s.sex,s.score);
return 0;
}
4.结构体赋值传参作返回值
5.结构体数组及应用
6.结构体嵌套与结构体大小
7.结构体中指针使用注意事项
8.基于结构体栈的实现与类型大总结
9.共用体基础与提高
在c语言中不同的成员使用共同的存储区域
的数据构造类型称为共用体简称共用,又称联合体。
共用体在定义。说明和使用形式上与结构体相似
。
两者本质上的不同
仅在于使用内存的方式
上。
union在操作系统底层的代码中用的比较多,因为它在内存共享布局上方便且直观。所以网络编程,协议分析,内核代码上有一些用到union
,比较好懂,简化了设计。
共用体占用空间的大小取决于类型长度最大的成员
。
而结构体变量所占内存长度是各成员占的内存长度之和。
每个成员分别占有其自己的内存单元。