zoukankan      html  css  js  c++  java
  • C基础及注意点概要

    ********** C ************

    参考:
    https://wenku.baidu.com/view/b6d1a6d784254b35eefd34e3.html?mark_pay_doc=0&mark_rec_page=1&mark_rec_position=2&clear_uda_param=1###

    1.static
    1) 如果加了static,就会对其它源文件隐藏(变量和函数)
    利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突
    2) 保持变量内容的持久
    存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化
    3) 修饰变量,变量未初始化,默认值为0

    #include <stdio.h>

    int fun(void)
    {
    static int count = 10; //事实上此赋值语句只执行过 1次
    return count--;
    }

    int count = 1;

    int main(void)
    {
    printf("global local static ");
    for(; count <= 10; ++count)
    printf("%d %d ", count, fun());
    return 0;
    }

    2.静态存储区、栈、堆
    静态存储区:静态数据、全局数据、常量
    栈:变量
    堆:动态内存分配,用malloc或new申请任意大小的内存


    3. 虚函数
    定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。
    constructor执行的时候对象都还没有,如何virtual?
    构造函数不能为虚函数,而析构函数可以且常常是虚函数。

    4.extern
    修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。

    5. const
    const 只读
    const int a=100

    6. 频繁使用的短小函数 -> 宏定义
    #define MAX(a, b) ((a)>(b)?(a):(b)) 

    注:括号需要添加,参考https://zhidao.baidu.com/question/462248346.html

    3/15

    1. 宏定义
    1) 条件编译: #ifdef #else #endif
    当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2

    #ifdef 标识符
    程序段1
    #else
    程序段2
    #endif

    2) 头文件重复定义:#ifndef #define #endif
    #ifndef GRAPHICS_H // 防止graphics.h被重复引用
    #define GRAPHICS_H

    #include <math.h> // 引用标准库的头文件

    #include “header.h” // 引用非标准库的头文件

    #endif

    2. 值传递、引用传递、指针传递
    值传递:
    形参是实参的拷贝,改变形参的值并不会影响外部实参的值

    指针传递:
    形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作

    引用传递:
    被调函数的形式参数虽然也作为局部变量在栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址,
    被调函数对形参做的任何操作都影响了主调函数中的实参变量。


    3. 指针和引用
    ★相同点:

    ●都是地址的概念;

    指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名。

    ★不同点:

    ●指针是一个实体,而引用仅是个别名;

    ●引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终”,指针可以“见异思迁”;

    ●引用没有const,指针有const,const的指针不可变;(具体指没有int& const a这种形式,而const int& a是有 的, 前者指引用本身即别名不可以改变,这是当然的,所以不需要这种形式,后者指引用所指的值不可以改变)

    ●引用不能为空,指针可以为空;

    ●“sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身的大小;

    ●指针和引用的自增(++)运算意义不一样;

    ●引用是类型安全的,而指针不是 (引用比指针多了类型检查)

  • 相关阅读:
    梅森素数
    高精度乘法
    快速幂取模
    高精度加法
    Linux 压缩&解压缩
    Lec_Cloud资源云平台
    IP102,IP102-K_V3.0 输入节点机
    A7互动主机
    音频处理器的使用
    关于测试随笔
  • 原文地址:https://www.cnblogs.com/stellar/p/8466522.html
Copyright © 2011-2022 走看看