1、结构体就是一大块内存,对他进行格式化的存储、读取。
struct _Person
{
int age;
char* name;
double height;
};
struct _Person p1={0};
p1.name = "全智贤";
p1.age=30;
printf("%s的年龄是%d\n",p1.name,p1.age);
2、printf("%d\n",sizeof(Person));
为什么是16?
对于int、short等放到结构体中保存是占用对应的字节,但是对于char*等,则只是保存它的指针(地址)。
19ptrSstruct.c
#include <stdio.h>
#include <string.h>
struct _Person
{
char *name; //指针,就是int大小 4个字节,保存的是指向字符串的指针
int age; //int大小 4个字节
double height; //double大小 8个字节
};
int main(int argc, char *argv[])
{
/*
//初始化方法1,用memset()方法
struct _Person p1;//这样定义的话,里面的内容会是乱七八糟的数据
memset(&p1,0,sizeof(struct _Person));
*/
//初始化方法2,定义变量时初始化
struct _Person p1 = {0};//这样定义的话,里面的内容会是乱七八糟的数据
p1.name = "全智贤";
p1.age = 30;
p1.height = 170;
printf("%s,%d\n",p1.name,p1.age);
printf("%d",sizeof(struct _Person));
return 0;
}