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 指针”得到的是指针本身的大小;

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

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

  • 相关阅读:
    笨方法学python中执行argv提示ValueError: not enough values to unpack (expected 4, got 1)
    VMware workstation安装
    Redis bigkey分析
    MySQL drop table 影响及过程
    MySQL 大表硬连接删除
    ES elasticsearch 各种查询
    ES elasticsearch 各种聚合
    ES elasticsearch 聚合统计
    ES elasticsearch 实现 count单字段,分组取前多少位,以地理位置中心进行统计
    MySQL行溢出、varchar最多能存多少字符
  • 原文地址:https://www.cnblogs.com/stellar/p/8466522.html
Copyright © 2011-2022 走看看