内存分布
1、内存空间的划分:全局区、静态区、栈区、堆区、常量区、数据区
全局区:在main函数外边定义的变量存储在全局区
静态区:使用static修饰的变量在静态区
栈区:在局部定义的变量,在栈区
堆区:堆区的空间,手动申请,手动释放
常量区:存放常量
数据区:存放代码
2、使用malloc函数申请空间,使用free函数释放空间
1 2 3 4 5 6 7
| #include <stdlib.h> void *malloc(size_t size); 功能:申请空间(连续的) 参数: size:具体要申请空间的大小 返回值: 申请到的空间的首地址,一般需要接受malloc的返回值,并且函数需要在调用的时候强转
|
3、释放空间
1 2 3 4 5 6
| void free(void *ptr); 功能:释放空间 参数: ptr:具体释放空间的首地址 返回值: 无
|
4、字符串函数
1)strlen
1 2 3 4 5 6 7
| #include <string.h> size_t strlen(const char *s); 功能:计算一个字符串的长度 参数: s:具体的字符串 返回值: 字符串的长度
|
注意:strlen计算字符串长度时,遇\0结束,长度不包括\0
2)strcpy
1 2 3 4 5 6 7 8
| #include <string.h> char *strcpy(char *dest, const char *src); 功能:将src赋值给dest 参数: dest:目的字符串 src:源的字符串 返回值: 复制后的字符串
|
注意:在将src的数据复制给dest的时候,也会将src的’\0’一起复制过去
3)strcat
需要保证s1足够大,否则会内存溢出
将s2的数据追加到s1的后面,从s1的\0的位置开始进行追加strcat(s1, s2);