俄特种部队进叙,大角牛片尾曲,我意江湖
1.结构体 声明
2.typedef? ?提升leve7.? ?.? 运算符? 和? - >
前面有指针,就用 ->
8.? * 解引用? ?声明指针12.内存对齐
?A.前面的地址必须是后面的地址的整数倍,不是就补齐? ? 字节对齐主要是为了提高内存的访问效率,比如intel 32位cpu,每个总线周期都是从偶地址开始读取32位的内存数据,如果数据存放地址不是从偶数开始,则可能出现需要两个总线周期才能读取到想要的数据,因此需要在内存中存放数据时进行对齐。?
代码部分:
// 定义一个结构体变量(年月日)计算该日是本年中的第几天 注意闰年问题 #include #include //#define PI 3 struct MyList1 { int num ; int age ; char *name; char sex[8]; }; typedef struct MyList2 { int num ; int age ; char name[15]; char *sex; }MyList2; typedef struct MyList3 { char *name; int num; }list; void Show1(list *q4 ,int len ) //for循环 { int i ; for(i=0;i2)) { printf("This year is Leap Year \n"); printf ("And today is the %d year's %d day \n",date.year,count+1); } else { printf("This year is not Leap Year \n "); printf("And toda is the %d year's %d day \n",date.year,count); } } ////switch error //void Calculate3(int year,int month ,int day ) //switch语句 //{ // switch (date.month) // {case 1: day=date.day; break; // case 2: day=date.day+3; break; // case 3: day=date.day+59; break; // case 4: day=date.day+90; break; // case 5: day=date.day+120; break; // case 6:day =date.day+151; break; // case 7: day=date.day+181; break; // case 8: day=date.day+212; break; // case 9: day=date.day+243; break; // case 10: day=date.day+273; break; // case 11: day=date.day+304; break; // case 12: day=date.day+334; break; // break; // } // if ((date.year %4== 0 && date.year % 100 != 0 ||date.year % 400 == 0) && date.month >=3) // { // day+=1; // printf("This year is Leap Year \n"); // printf ("And today is the %d year's %d day \n",date.year,date.day); // } // else // { // printf("This year is not Leap Year \n "); // printf("And toda is the %d year's %d day \n",date.year,date.day); // } //} //使用 . 运算符 和 -> 运算符 typedef struct A { char a; int b; struct A *pe; }A; typedef struct B { A a; int b; struct A * pc; }B; struct C //内存对齐 { int c; char a;//前面的地址必须是后面的地址的整数倍 short b; }; int main() { //1.鲁班七号一般struct输出 struct MyList1 q1= {1,6,"LUBAN","nan"}; q1.name = "LUBAN7HAO"; printf("%d,%d,%s,%s\n",q1.num,q1.age,q1.name,q1.sex); //2.鲁班七号typedef 输出 strcpy 曹孟德 MyList2 q2={2,9,"LUBAN7","NAN"}; q2.num = 4; strcpy(q2.name,"caomengde"); printf("%d %d %s %s\n",q2.num,q2.age,q2.name,q2.sex); list q4[4]= {{"luban1",100},{"luban2",99},{"luban3",94},{"luban6",92}}; //3.show 函数输出 王者荣耀 for 循环打印 int len = sizeof(q4)/sizeof(q4[0]); Show1(q4,len); // 4 define 替换 //printf ("%d\n",PI); //5 计算日期 不加结构体变量 Calculate1(2008,3,15); //6 计算日期 加结构体变量 Calculate1(2019,4,15); ////error 7 计算日期 switch语句 //Calculate3(2016,4,5); //8 使用 . 运算符 和 -> 指向符 B b; b.a.a; //通过B 访问 A中的a b.pc;//pc前面没有指针 用 . b.a.pe;//pe 前面没有指针 用 . b.pc->pe; // pe 前面有指针 pc 所以用 -> printf ("the len is is %d ",sizeof(C)); getchar(); return 0; }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论