一、strlen与sizeof的区别:
1、strlen计算字符串的具体长度(只能是字符串),不包括字符串结束符。返回的是字符个数。
2、sizeof计算声明后所占的内存数(字节大小),不是实际长度。
3、sizeof是一个取字节运算符,而strlen是个函数。
例:
int i;
int j;
char str[11]=“0123456789”;//字符串数组定义时注意为字符串个数+1
i=sizeof(str);//i=11,统计到字符串结束符’\0’为止
j=strlen(str);//j=10,统计到字符串结束符之前
数组作为函数的参数,会退化为指针
二、变量:
函数存储在栈区,函数结束之后,就会被销毁,里面定义的数据int a也会销毁,当再次调用该函数的时候,值并不会改变;但如果加了static int a,static数据是存储在数据区中,并不会被销毁,当再次调用了该函数,int a的值会在上一次的基础上变化
三、结构体
//结构体的定义:
Struct student
{
char name[21];//1代表“\0”
int age;
char addr[51];
};
第一种赋值:
//结构体的使用:
//创建结构体变量
//结构体类型 结构体变量
struct student stu; //struct student代表一个变量类型,比如int stu
//stu.name ="张三";错误,数组名不能直接赋值
strcpy(stu.name,"张三");
stu.age = 18;
//stu.addr = "北京市*******";
strcpy(stu.addr,"北京市*******");
第二种赋值:
struct student stu = {"张三",18,"北京"};
//结构体的输出
printf("姓名:%s\n",stu.name);
printf("年龄:%d\n",stu.age);
printf("地址:%s\n",stu.addr);
结构体数组
struct student stu[3]=
{
{"张三",22,"北京"},
{"李四",21,"南京"},
{"王二",23,"东京"}
};
for(int i=0;i<3;i++)
{
printf("姓名:%s\n",stu[i].name);
printf("年龄:%d\n",stu[i].age);
printf("地址:%s\n",stu[i].addr);
}
四、typedef的使用
typedef 给类型起别名
语法:typedef 原名 别名
例:
typedef struct student mystu;//struct student = mystu
struct student stu = {"张三",18,"北京"};
mystu stu={"张三",18,"北京"};
================================================================
简化写法
typedef struct student
{
char name[22];
int age;
}mystu;
//struct student = mystu
mystu stu={"张三",18,"北京"};
五、static、exten和const
介绍:
static:静态变量
extern:修饰变量或者函数的声明,可以在其他文件使用
const:常量