结构体
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>struct student { //结构体的字节数因为对齐与理论值不一致 int no; char name[20]; char sex;}; // 结构体类型声明,注意最后一定要加分号int main() { /// 1003"mama"'m' /// 1008"Mike"'f' /// 1009"Math"'f' struct student s = { 1001, "lele", 'm'}; //struct student sarr[3]; int i; printf("%d %s %c", s.no, s.name, s.sex); //for (int i = 0; i < 3; i++) //{ // scanf("%d%s%c", &sarr[i].no, &sarr[i].name, &sarr[i].sex); //} //for (int i = 0; i < 3; i++) //{ // printf("%d%s%c", sarr[i].no, sarr[i].name, sarr[i].sex); //} return 0;}
结构体指针【指针偏移】
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>struct student { //结构体的字节数因为对齐与理论值不一致 int no; char name[20]; char sex;}; // 结构体类型声明,注意最后一定要加分号int main() { struct student s = {100, "Lizhilong", 'F'}; struct student* p; struct student sarr[3] = { 101, "lili", 'F', 103, "huahua", 'm', 105, "Gogo", 'f' }; p = &s; //注意运算符的优先级 结构体访问 . 大于 -> 大于 * 解引用运算符 //printf("%d %s %c", (*p).no, (*p).name, (*p).sex); //printf("%d %s %c", (*p).no, (*p).name, (*p).sex); int no; p = sarr; printf("----------------------------\n"); no = (p->no)++; printf("num=%d, p->num=%d\n", no, p->no); no = (p++)->no; //no = (p++)->no; printf("num=%d, p->num=%d\n", no, p->no); return 0;}