阿里云专有网络做网站,北京赛车网站开发多少钱,wordpress写文章页面无法显示,互联网网站建设公司组织架构一.typedef的应用
1.给已定的变量类型起个别名
加不加typedef#xff0c;类型不变
#xff08;加之前是个数组#xff0c;加之后是数组类型#xff1b; 加之前是个函数指针#xff0c;加之后是函数指针类型#xff1b;#xff09;
struct _person
{char name[20];in…一.typedef的应用
1.给已定的变量类型起个别名
加不加typedef类型不变
加之前是个数组加之后是数组类型 加之前是个函数指针加之后是函数指针类型
struct _person
{char name[20];int age;
};
typedef _person person_t;上下相等typedef struct _person
{char name[20];int age;
}person_t;
//怎么做的效果很是明显
struct Student
{char name[20];int age;char sex;
};int main(void)
{struct Student stu1 { qwl , 20, m };struct Student stu2 { qwj , 16, m };struct Student stu3 { chx , 48, m };struct Student* pst1 stu1;struct Student* pst2 stu2;struct Student* pst3 stu3;return 0;
}typedef struct Student
{char name[20];int age;char sex;
}STU;int main(void)
{STU stu1 { qwl , 20, m };STU stu2 { qwj , 16, m };STU stu3 { chx , 48, m };STU * pst1 stu1;STU * pst2 stu2;STU * pst3 stu3;return 0;
}
二.#define
标识符替换
#定义 标识符 内容
#define name stuff#define MAX 100
#定义 宏名参数表 内容
#define name(part-list) stuff#define ADD(a,b) (a)(b)
part-list是一个由逗号隔开的标识符
三.assert
3.1 所在头文件 assert.h
3.2 assert对表达式进行检测 如果expression的结果为 0条件不成立那么断言失败表明程序出错assert() 会向标准输出设备一般是显示器打印一条错误信息并调用 abort() 函数终止程序的执行。 如果expression的结果为非 0条件成立那么断言成功表明程序正确assert() 不进行任何操作。
3.3 如果定义了#define NDEBUGassert就无效了
每次断言只能检验一个表达式
四.exit函数
4.1 头文件stdlib.h 4.2 功能
退出程序的函数 4.3 用法
exit(1) 为异常退出只要括号里的参数不是0都为异常退出
exit(0)正常退出
4.4 与return的区别
return是返回上一级主调函数不一定会退出程序
五.free函数
5.1 头文件stdlib.h
5.2free函数必须和malloc函数同时使用否则会报错
free无法释放栈内存的变量
#includestdio.h
#includestdlib.h
struct node //定义结构体
{int name;//结构体里面定义一个变量叫做name
};int main()
{struct node *p;//定义一个结构体变量free(p);
}这个代码会报错因为free只能释放由malloc动态分配在堆内存的内存直接在主函数定义结构体变量是分配在栈内存里的内存所以释放不了
#includestdio.h
#includestdlib.h
struct node //定义结构体
{int name;//结构体里面定义一个变量叫做name
};int main()
{struct node *p malloc(sizeof(struct node));//定义一个结构体变量free(p);
} 5.3 free函数释放的是指针所指向的地址的内存不是指针本身所在地址的内存因此可以通过函数直接释放内存
#includestdio.h
#includestdlib.h
struct node //定义结构体
{int name;//结构体里面定义一个变量叫做name
};void fun(struct node *p)
{free(p);
}int main()
{struct node *p malloc(sizeof(struct node));//定义一个结构体变量p-name 10;//给结构体赋值printf(%d\n,p-name);fun(p);//释放内存printf(%d,p-name);
}