1.C语言基础知识
参考博客:
https://blog.csdn.net/qq_45254369/article/details/126023482?ops_request_misc=%257B%2522request%255Fid%2522%253A%252277629891-A0F3-4EFC-B1AC-410093596085%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=77629891-A0F3-4EFC-B1AC-410093596085&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-9-126023482-null-null.nonecase&utm_term=C%E8%AF%AD%E8%A8%80%E5%85%AB%E8%82%A1&spm=1018.2226.3001.4450
1.sizeof和strlen的区别
a.sizeof是运算符,strlen是函数。
b.sizeof在编译的时候就计算出了结果,strlen在函数运行的时候才能计算出来。
c.strlen只能测试字符串的长度,遇到'\0'结束。
2.大小端
大端:数据的高字节存储在内存的低地址中。
小端:数据的高字节存储在内存的高地址中。
3.strcpy和memcpy区别
char *strcpy(char *dest, const char *src);
char *strncpy(char *dest, const char *src, size_t n);
void *memcpy(void *dest, const void *src, size_t n);
1.strcpy只能进行字符串的拷贝,memcpy可以复制任何内容。
2.使用strcpy时可以不指定字符串的长度,因为字符串结尾为'\0',遇到'\0'会自动结束。
4.内存五大分区
栈:运行时分配,结束释放。
堆:malloc申请,free释放(C++:new申请,delete释放)
全局/静态变量
常量文本
程序代码
5.链表和数组区别
1.链表节点中含有指针next区域,存储空间利用率低;数组存储空间利用率高。
2.链表插入、删除效率高;数组查找效率高。
3.链表占用的空间可以是不连续的,数组占用的空间为连续的。
6.const和define的区别
1.处理方式:define在预处理阶段进行替换,const在编译的时候确定其值。
2.类型检查:define无类型,不进行类型检查;const有数据类型,编译时会进行类型检查。
3.内存空间:define不分配内存,知识进行简单的拷贝;const在静态存储区分配空间,在程序运行过程中内存中只有一个拷贝。