前置知识

  • 函数
  • 数组
  • 字符串
  • 指针
  • 内存
  • 结构体

类型定义

1
2
3
4
5
6
7
8
9
10
11
typedef 数据类型 别名;

eg1.
typedef int zx;

eg2.
typedef struct{
int a;
char b;
float c;
}别名;

内存分类

  • 静态内存
    静态声明的变量和全局变量使用这部分内存,这些变量在程序开始运行时分配,直到程序终才消失。

  • 自动内存(栈内存)
    函数内部声明的变量使用这部分内存,在函数被调用时才创建。

  • 动态内存(堆内存)
    根据需求编写代码动态分配内存,可以编写代码释放,内存中的内容直到释放才消失。

    1. 使用 malloc(memory allocate) 分配内存
      1
      2
      3
      void* malloc(size_t)
      成功->返回堆内存上分配的内存指针
      失败->返回空指针
    2. 使用分配的内存
    3. 使用 free 函数释放内存
      动态内存分配示例
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      1.基本数据类型
      #include<stdio.h>
      #include<stdlib.h>
      int main(int argc,char const *argv[]){
      int *p;
      p=(int*)malloc(sizeof(int));
      *p = 15;
      printf("%d\n",*p);
      free(p);
      return 0;
      }

      2.字符串类型
      #include<stdio.h>
      #include<stdlib.h>
      #include<string.h>
      int main(int argc,char const *argv[]){
      char *s;
      p=(char*)malloc(10);
      strcpy(s,"Hello");
      printf("%s\n",s);
      free(p);
      return 0;
      }

      3.数组类型
      #include<stdio.h>
      #include<stdlib.h>
      int main(int argc,char const *argv[]){
      int *arr =(int*)malloc(5 * sizeof(int));
      for(int i=0;i<5;i++){
      arr[i] = 0;
      }
      for(int i=0;i<5;i++){
      printf("%d\n",arr[i]);
      }
      return 0;
      }

      4.结构体类型
      #include<stdio.h>
      #include<stdlib.h>
      typedef struct{
      int x;
      int y;
      }po;
      int main(int argc,char const *argv[]){
      po *p;
      po=(po*)malloc(sizeof(po));
      p->x = 5;
      p->y = 10;
      printf("%d\n",p->x);
      printf("%d\n",p->y);
      return 0;
      }