如何将自定义数据类型——结构体改写为长尾词?

2026-04-10 08:511阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计900个文字,预计阅读时间需要4分钟。

如何将自定义数据类型——结构体改写为长尾词?

伪原创开头内容改写如下:

在探索创新的道路上,我们常常会遇到各种挑战。为了打破常规,以下是一些巧妙的方法,帮助你重新构思和表达原有内容,而不失其核心意义。

如何将自定义数据类型——结构体改写为长尾词?

#define _CRT_SECURE_NO_WARNINGS 1

自定义类型:结构体、枚举、联合体

#pragma pack(8)//设置默认对齐数(可以减小减小浪费空间) struct stu//struct结构体类型,str结构体标签 struct //没有stu叫匿名结构体类型

struct

{ int a; char c; }sa;//这样写结构体变量也可以使用

int main() {

//struct //{ // int a; // char c; //}; sa; //struct //{ // int a; // char c; //}; *psa; //int main() //{ // psa = &sa;//结构体成员变量相同,但类型标签不同时,系统默认内容不同,所以不能运行 //}//编译器会把上面的俩个声明当成完全不同的两个类型,所以是非法的 //struct Node //{ // int data;//4字节 数据域 // struct Node* next;//4/8字节 指针域 //}; //结构体的自引用; // struct Node //{ // int data; // struct Node next; //}; //正确的自引用方式; // struct Node //{ // int data; // struct Node* next;//可以放地址 //}; //typedef struct Node//这里的node不能去,否则下面的指针不能用 //{ // int data;//4 // struct Node *next; //} Node;//类型名,不是变量名 //struct Node n1; //结构体初始化和定义 // struct S //{ // char c; // int a; // double d; // char arr[20]; //}; //int main() //{ //struct S s = { 'c',100,3.14,"hello bit" }; //printf("%c %d %lf %s\n", s.c, s.a, s.d, s.arr); //} //struct T //{ // double weight; // short age; //}; //struct S //{ // char c; // struct T st;//结构体里面放结构体 // int a; // double d; // char arr[20]; //}; //int main() //{ // struct S s = { 'c',{55.6,30}, 100,3.14,"hello bit" } //} //结构体内存对齐 // struct s1 //{ // char c1; // int a; // char c2; //}; //struct s1 //{ // char c1; // int a; // char c2; //}; //int main() //{ //1.第一个成员在与结构体变量偏移量为0的地址处; // 2.其它成员变量要对齐到某个数字(对齐数)的整数倍的地址处 // 对齐数=编译器默认的一个对齐数与该成员大小的较小值//对齐数默认是8 // 3结构体总大小为最大对齐数(每个成员变量都有1个对齐数)的整数倍 // 4.如果嵌套了结构体的情况,嵌套的结构体对齐到自己最大对齐数的整数倍处,结构体的整体大小 // 就是所有最大对齐数与该成员大小的较小值。 // struct S1 s1 = { 0 }; // printf("%d\n", sizeof(s1));//12 // struct S2 s2 = { 0 }; // printf("%d\n", sizeof(s1));//8//结构体计算大小规则 //}

//struct s3; //{ // double d; // char c; // int i; //}//16 // //struct s4;//32 //{ // char c1; // struct S3 s3;//自己的最大对齐数为8,所以对齐到16开始放(浪费7个后,开始放) // double d;//从24开始放,不浪费 //}//32

//为什么存在内存对齐 //1.某些硬件平台只能在某些特定地址取某些特定类型的数据 //2.性能原因 //总结 是拿空间换时间的做法 // //printf("%d\n", offsetof(struct s, c));//offsetof 可以计算出偏移量的大小 //这里的offsetof是一个宏,不是函数

//void Init(struct S tmp)//传值不能改变原函数内容 //{ // tmp.a = 100; // tmp.c = 'w'; // tmp.d = 3.14; //} // //void Init(struct S *ps)//传地址能改变原函数内容 //{ // tmp.a = 100; // tmp.c = 'w'; // tmp.d = 3.14; //} // //void print1(struct S tmp)//只能打印 //{ // printf("%d %c %lf\n", tmp.a, tmp.c, tmp.d); //} // //void print1(struct S *ps)//可以打印,也可以改变 //{ // printf("%d %c %lf\n", ps.a, ps.c, ps.d); //} // //struct S s{0}; //Init(s); //Init(&s); //print1(s); //print2(&s);

return 0;

}

本文共计900个文字,预计阅读时间需要4分钟。

如何将自定义数据类型——结构体改写为长尾词?

伪原创开头内容改写如下:

在探索创新的道路上,我们常常会遇到各种挑战。为了打破常规,以下是一些巧妙的方法,帮助你重新构思和表达原有内容,而不失其核心意义。

如何将自定义数据类型——结构体改写为长尾词?

#define _CRT_SECURE_NO_WARNINGS 1

自定义类型:结构体、枚举、联合体

#pragma pack(8)//设置默认对齐数(可以减小减小浪费空间) struct stu//struct结构体类型,str结构体标签 struct //没有stu叫匿名结构体类型

struct

{ int a; char c; }sa;//这样写结构体变量也可以使用

int main() {

//struct //{ // int a; // char c; //}; sa; //struct //{ // int a; // char c; //}; *psa; //int main() //{ // psa = &sa;//结构体成员变量相同,但类型标签不同时,系统默认内容不同,所以不能运行 //}//编译器会把上面的俩个声明当成完全不同的两个类型,所以是非法的 //struct Node //{ // int data;//4字节 数据域 // struct Node* next;//4/8字节 指针域 //}; //结构体的自引用; // struct Node //{ // int data; // struct Node next; //}; //正确的自引用方式; // struct Node //{ // int data; // struct Node* next;//可以放地址 //}; //typedef struct Node//这里的node不能去,否则下面的指针不能用 //{ // int data;//4 // struct Node *next; //} Node;//类型名,不是变量名 //struct Node n1; //结构体初始化和定义 // struct S //{ // char c; // int a; // double d; // char arr[20]; //}; //int main() //{ //struct S s = { 'c',100,3.14,"hello bit" }; //printf("%c %d %lf %s\n", s.c, s.a, s.d, s.arr); //} //struct T //{ // double weight; // short age; //}; //struct S //{ // char c; // struct T st;//结构体里面放结构体 // int a; // double d; // char arr[20]; //}; //int main() //{ // struct S s = { 'c',{55.6,30}, 100,3.14,"hello bit" } //} //结构体内存对齐 // struct s1 //{ // char c1; // int a; // char c2; //}; //struct s1 //{ // char c1; // int a; // char c2; //}; //int main() //{ //1.第一个成员在与结构体变量偏移量为0的地址处; // 2.其它成员变量要对齐到某个数字(对齐数)的整数倍的地址处 // 对齐数=编译器默认的一个对齐数与该成员大小的较小值//对齐数默认是8 // 3结构体总大小为最大对齐数(每个成员变量都有1个对齐数)的整数倍 // 4.如果嵌套了结构体的情况,嵌套的结构体对齐到自己最大对齐数的整数倍处,结构体的整体大小 // 就是所有最大对齐数与该成员大小的较小值。 // struct S1 s1 = { 0 }; // printf("%d\n", sizeof(s1));//12 // struct S2 s2 = { 0 }; // printf("%d\n", sizeof(s1));//8//结构体计算大小规则 //}

//struct s3; //{ // double d; // char c; // int i; //}//16 // //struct s4;//32 //{ // char c1; // struct S3 s3;//自己的最大对齐数为8,所以对齐到16开始放(浪费7个后,开始放) // double d;//从24开始放,不浪费 //}//32

//为什么存在内存对齐 //1.某些硬件平台只能在某些特定地址取某些特定类型的数据 //2.性能原因 //总结 是拿空间换时间的做法 // //printf("%d\n", offsetof(struct s, c));//offsetof 可以计算出偏移量的大小 //这里的offsetof是一个宏,不是函数

//void Init(struct S tmp)//传值不能改变原函数内容 //{ // tmp.a = 100; // tmp.c = 'w'; // tmp.d = 3.14; //} // //void Init(struct S *ps)//传地址能改变原函数内容 //{ // tmp.a = 100; // tmp.c = 'w'; // tmp.d = 3.14; //} // //void print1(struct S tmp)//只能打印 //{ // printf("%d %c %lf\n", tmp.a, tmp.c, tmp.d); //} // //void print1(struct S *ps)//可以打印,也可以改变 //{ // printf("%d %c %lf\n", ps.a, ps.c, ps.d); //} // //struct S s{0}; //Init(s); //Init(&s); //print1(s); //print2(&s);

return 0;

}