@(C语言)
[toc]
内存
c语言中内存分三个区:
程序区:存储程序的二进制文件
静态存储区:全局变量和静态变量
-
动态存储区:
- 堆区:由程序动态分配
- 栈区:由编译器动态分配,编译器自动申请和释放
-
(void )malloc*(int size):
- 分配内存的单元是字节,
- 分配大小是size。
- 分配的内存是连续的
-
void* calloc(count,size)
- 申请count个大小为size的连续空间,这个连续空间的大小是size
- 而不是Count*Size的空间,同时它会初始化0;
-
free
- 动态申请的内存用完后要释放,且不能重复释放
- 释放完要将它的指针赋值为NULL,否则将成为野指针
- 申请和释放要一一对应
字符串
C语言中没有String
常量区的内容不能被修改。
char * str ="string";
//系统先分配了一个常量区A,用来存储"string"
//char * str 没有初始化
//将常量区A的首地址指向str
//当我们修改的时候失败,是因为常量区不允许修改的
char * ch =(char *)malloc(100*sizeof(char));
//将"china"内容copy过来赋值到指定空间
//如果 ch="china",则是将ch指向了常量地址
strcpy(ch,"china");
ch[2] ='b';
printf("%s \n",ch)
- strcpy 拷贝
- strcat 添加
char fundaction [25];
char *A=" a ";
char *B=" b ";
char *C =" c";
strcpy(fundaction, A);
strcat(fundaction,B);
strcat(fundaction,C);
printf("fundaction : %s \n",fundaction);
输出:
fundaction : a b c