1.字符串输出输入函数

  读入字符串的方法:

    1) scanf 特点:不能接收空格

    2) gets 特点:可以接受含有空格的字符串 ,不安全

    3) fgets(); 特点:可以帮我们自动根据数组的长度截取适当的长度保存,安全

            如果输入的长度大于数组的长度,自动将数组最后一个元素保存为\0

           如果输入的长度小于数组的长度,会自动先保存\n,再保存\0   使用格式:fgets(ch,sizeof(ch),stdin);

  输出字符串的方法:

    1) printf() %s   缺点:不能自动换行

    2) puts() 特点:  可以自动换行

    3) fputs()特点:不可以的自动换行

     使用格式:fputs(ch,stdout); //stdout表示输出

2.const修饰符的使用 

  作用:const作用可以把修饰的变量变成只读的(常量)
  1、修饰变量
    const int a=23;
    int const a = 23;  

  2、修饰指针
    const int *p; //指向可变 ,值不能变
    int const *p; //同上
    int * const p; //指向不可变,值可变
    const int* const p;// 指向和值都不能变  

  技巧:
    const 在 * 的左侧 : 指向可变,值不能变
    const 在 * 的右侧 :指向不可变 值可变

    const 在 * 的两侧 :指向和值都不能变

3、C语言中的内存管理分配.五大区
  内存分为5大区域
  栈区 -- 存放局部变量,临时变量
  堆区 -- 程序运行过程中,动态分配的内存
  BSS区-- 未初始化的全局变量和静态变量
  数据段 (常量区)-- 已经初始化的全局变量和静态变量
  代码段 -- 源码代码程序编译产生的二进制数据

4.动态内存管理 

1) malloc
  (void *)malloc(n) //动态的向内存申请连续的n个字节 返回的是新申请的内存空间的首地址
  int *p = (int *)malloc(100); //p是在栈区 malloc(100) 在堆区
  malloc不会把新申请的空间初始化
  memset(p,'0',100); //全部初始化为0

2) calloc
  int *p = (int *)calloc(5,4); //申请5个长度为4的空间
  calloc可以把新申请的空间初始化0

3) realloc
  为已经存在的空间扩展大小
  int *p = (int *)realloc(p,size);

4) free
  释放我们指定的内存空间
  free(p); //p是我们新申请的内存单元 free后,p是一个野指针
  如果不释放,造成内存的泄露

5.指针和函数之间的关系
  1)返回值是指针的函数 :指针函数
  char * getday(){
    return "星期一";
  }

2)函数指针
  指向函数的指针
  格式:返回值 (*指针变量名)(函数的参数);
  int sum(int a,int b){
    return a+b;
  }

定义:
  格式一:int (*p1)(int a,int b); // 函数指针p1 只能指向返回值是int类型,并且有两个int 类型参数的函数。
      p1 = sum;

  格式二:int (*p2)(int,int);
      p2 = sum;

  格式三:int(*p3)(int a, int b) = sum;

6. 1、什么是结构体?

  答:若干个相同或者不同类型的数据组成的新的构造类型

  2、定义格式:
  struct 结构体名{
  成员列表;
  };

  3、定义结构体变量。
  struct stu{
    int age;
  }stu1,stu2;

  //匿名结构体
  struct{
    int model;
  }s1;

  //先定义结构体,后定义变量
    struct stu stu3;

  4、初始化结构体变量
    a. 定义结构体同时初始化:
      struct stu{
        int age;
        char name[20];
       }stu1={23,"sss"};

    b. 先定义结构体变量的时候初始化
      struct stu stu3={18,"sb"};

    c. 先定义结构体变量,后初始化
      struct stu stu4;
      strcpy(stu4.name,"xxxx");//stu4.name="xxx";

  5.结构体存储空间计算
    结构体在内存中占用的存储空间是 所有元素占用空间之和(考虑对齐)
    1.逐个元素对齐(下个元素与上个元素对齐)
    2.整体对齐(最后的和能单独整除所有元素)
    3.如果是数组,使用的是基本类型来对齐

字符串输出输入函数,const修饰符,内存分区,动态内存管理,指针和函数,结构体的更多相关文章

  1. C/C++ 中 const 修饰符用法总结

    C/C++ 中 const 修饰符用法总结 在这篇文章中,我总结了一些C/C++语言中的 const 修饰符的常见用法,供大家参考. const 的用法,也是技术性面试中常见的基础问题,希望能够帮大家 ...

  2. const修饰符限定的常量

    类型前加const修饰符限定变量为只读,称为常量,定义时必须初始化,且初始化后编译器不允许再修改常量的值. 一.常量的定义 const在类型前面 const int value: //value是co ...

  3. [原创] 基础中的基础(二):C/C++ 中 const 修饰符用法总结

    在这篇文章中,我总结了一些C/C++语言中的 const 修饰符的常见用法,供大家参考. const 的用法,也是技术性面试中常见的基础问题,希望能够帮大家梳理一下知识,给大家一点点帮助.作者是菜鸟一 ...

  4. 转载----C/C++ 中 const 修饰符用法总结

    感谢原创作者,写的好详细.不忍错过,所以转载过来了... 原文地址: https://www.cnblogs.com/icemoon1987/p/3320326.html 在这篇文章中,我总结了一些C ...

  5. Delphi 中 函数参数中的 const 修饰符的本质以及注意事项

    来自:http://blog.csdn.net/farrellcn/article/details/9096787 ------------------------------------------ ...

  6. C++中 容易忽视的const 修饰符

    C++可以用const定义常量,也可以用#define定义常量,但是前者比后者有更多的有点: (1)const常量有数据类型,而宏常量没有数据类型.编译器可以对const进行类型安全检查,而后者只进行 ...

  7. [C++]const修饰符

    Date: 2014-1-1 Summary: const 修饰符笔记 Contents: 1.const 修饰符 声明一个常量数据类型 , 在编译时就确定数据类型 2.const 与 指针 一般情况 ...

  8. const修饰符与函数

    一.用const修饰函数的参数 函数参数类型前加const指明该参数为常量,在函数内部不可改变. void func(const int x) { //x不可以在内部进行赋值等操作. } 注:当参数为 ...

  9. C++ c++与C语言的区别(三目运算符,const修饰符)

    //区别⑦:三目运算符(C++版本) #include<iostream> using namespace std; //三目运算符 C语言返回变量的值 C++语言是返回变量本身 void ...

随机推荐

  1. 使用using current logfile实现DG备库实时更新

    DG1是主库,DG2是备库:运行在最大可用模式. 实验一:未使用using current logfile参数时,备库在最大可用模式下,不能实时同步备库的更新 -此时需要等待主库进行归档---侧面证明 ...

  2. [bzoj1787][Ahoi2008]Meet 紧急集合(lca)

    传送门 可以看出,三个点两两之间的lca会有一对相同,而另一个lca就是聚集点. 然后搞搞就可以求出距离了. ——代码 #include <cstdio> #include <cst ...

  3. 贪婪大陆(cogs 1008)

    [题目描述] 面对蚂蚁们的疯狂进攻,小FF的Tower defense宣告失败……人类被蚂蚁们逼到了Greed Island上的一个海湾.现在,小FF的后方是一望无际的大海,前方是变异了的超级蚂蚁. ...

  4. UVA 12035 War Map

    让我先把微笑送给出题人 这个题最基础的一个想法:先找出一个度数和为总度数和的1/2的点集,然后判断这个点集和这个点集的补集能否形成二分图.但是就算我们把判断的复杂度看成O(1),这个算法的复杂度也是 ...

  5. [转] Scalers:刻意练习的本质就是持续行动+刻意学习

    原文: http://www.scalerstalk.com/1264-peak-conscious ------------------------------------------------- ...

  6. Office WORD如何为每一页设置不同的页眉页脚

    如下图所示,我想要为封面和目录,摘要等等设置不同的页眉页脚(一般封面和目录不需要页脚)   而从正文开始,套用相同的页眉和以页数作为页脚(注意"第一章 绪论"不是这个文档的第一页) ...

  7. hdu1873 看病要排队(结构体优先队列)

    看病要排队 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  8. 无限级分类Asp.net Mvc实现

    无限级分类Asp.net Mvc实现   无限级分类涉及到异步加载子类.加载当前类和匹配问题,现在做一个通用的实现.   (一) 效果如下:   (二)设计.实现及使用 (1)数据库 (a)表设计db ...

  9. java 生成压测数据

    询价接口压测,需要批量生成数据, 数据包括4个字段(车牌号,车架号,发动机号,支付号)licenseNo,vehicleFrameNo,engineNo,payFlowId 需符合LoadRunner ...

  10. 基于 Vue.js 之 iView UI 框架非工程化实践记要 使用 Newtonsoft.Json 操作 JSON 字符串 基于.net core实现项目自动编译、并生成nuget包 webpack + vue 在dev和production模式下的小小区别 这样入门asp.net core 之 静态文件 这样入门asp.net core,如何

    基于 Vue.js 之 iView UI 框架非工程化实践记要   像我们平日里做惯了 Java 或者 .NET 这种后端程序员,对于前端的认识还常常停留在 jQuery 时代,包括其插件在需要时就引 ...