zoukankan      html  css  js  c++  java
  • C语言基础知识小总结(1)

    这几天在学习C语言,零零散散的学了十来天,这两天由于家里来了朋友,也没有顾得上写个总结,今天刚把朋友送走,下面就把这十来天的学习情况总结一下,一边在以后好复习与查看。

     

        一、流程控制包括:顺序语句、判断语句、循环语句

        二、数组、函数的地址表示方法是直接写变量名,其他的前面加 & 符号(目前我所知道的是这样,以后发现再补充)

          例: int array[5];   //int数组

            array 表示指向数组首元素的地址的指针

            *array 表示首元素的值(通过地址的方法求值)

            *(array+i) //i=0、1、2、3、4....   这表示数组中的某一个元素的值

          

          结构体指针调用其成员:

            例:

              struct student

                {

                  int id;

                  char sex;

                  int age;

                }sd;

     

              struct student *sd1;

              sd1->id;

              sd1->sex;

              sd1->age;

    union(共用体标识符)

    typedef(用来定义新的数据类型名来替代已有数据类型名)格式:typedef 源数据类型名 新数据类型名

     预处理命令:文件包含命令,条件编译命令和宏定义命令

           ******:宏名一般使用大写字母,为了与变量名区别

        宏函数:格式如下 #define 宏函数名(参数表) 字符串

              例:#define M(x,y) x*y;  //调用时就像调用有参函数一样 sum = M(int a,int b);

    注意:宏的取消用#undef  、续行符:“”

    条件编译:

      (1) #if(n)def 标识符                  //当不带n时,标识符被宏定义过,就执行代码段1,否则执行代码段2;

           代码段1;                      //当带n时,当标识符没有被宏定义过,就执行代码段1,否则执行代码段2;

          #else

           代码段2;

          #endif

     

      (2) #if  常量表达式1               //此条件编译类似于if-else语句的用法

            代码段1;

         #elif 常量表达式2

            代码段2;

         #elif 常量表达式3

            代码段3;

          ....

         #else

            代码段n;

          #endif

     

    动态内存(也叫堆内存)的分配主要用到三个函数:malloc(); calloc(); realloc();

        malloc(); 格式如下:void * malloc(unsigned int size);

                size表示分配的字节数。

               例:int * p=(int *)malloc(sizeof(int)*100);  //分配100个int类型的内存空间

                  注意:因为不能将"void*"赋值给"int*"类型的指针变量,所以必须通过(int*)来将进行强制转换。函数的实                                    参为sizeof(int),用于指明一个整形数据需要的大小。

        calloc(); 格式如下: void * calloc(unsigned int n,unsigned int size);

                 对比上面便可以明白:int * p=(int *)calloc(100,sizeof(int);  //分配100个int类型的内存空间

        realloc();格式如下:void * realloc(void * mem_addr,unsigned int newsize);

                mem_addr是指需要重新分配的堆内存指针,newsize是指重新分配后的空间的大小。该函数的作用是先释放原来                        men_addr所在的内存区域,并按照newsize指定的大小重新分配空间,同时将原有的数据从头到尾拷贝到新分配的          内存区域,并且返回该内存的首地址,即重新分配动态存储,日过重新分配成功则返回指向被分配内存的指针,否则返回空指针。

               例: int * p=NULL;

                  p=(int *)malloc(sizeof(int)*10);  //先分配10个int类型的内存空间

                  p=(int *)realloc(p,sizeof(int)*10);  //重新分配100个int类型的内存空间

                 

          

     

  • 相关阅读:
    saltstack学习
    linux命令学习(2):wc 命令
    linux命令学习(1):grep 命令
    Docker Compose—简化复杂容器应用的利器
    Docker-compose命令详解
    Python json数据写入csv json excel文件
    Centos 不重启 修改ulimit参数
    pip包管理工具 基本使用
    python 使用xpath解析含有命名空间(xmlns)的xml
    pyqt5 + pyinstaller 制作爬虫小程序
  • 原文地址:https://www.cnblogs.com/xujingyang/p/4665077.html
Copyright © 2011-2022 走看看