C语言_内存和字符串

@(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

你可能感兴趣的:(C语言_内存和字符串)