C/C++ 基础笔记(一)

本片核心知识:计算机核心组成、编译链接流程、头文件引用、VS 项目结构与快捷键、进制 / 码制 / 字符编码、基础数据类型、数据溢出、输入输出操作

一、计算机组成与编程基础

概念

电脑由主机和外设组成,编程核心关注CPU、内存、硬盘三大部件。

特性

  1. CPU :运算中心,负责数据处理,不存储数据

  2. 内存 :临时存储数据,CPU 读取速度远快于硬盘;内存不足时启用虚拟内存(借用硬盘空间,速度变慢)。

  3. 硬盘:永久存储数据,分机械硬盘(转速决定速度)和固态硬盘(读写更快);程序运行时需从硬盘加载到内存。

  4. C/C++ 优势 :可直接操作内存

二、编译与运行流程

概念

源代码需经编译、链接生成可执行文件,才能被计算机运行。

特性

  1. 源代码:编辑器编写的源文件(.c/.cpp)。

  2. 编译 :源代码转二进制,Windows 生成OBJ 中间文件(1 个源文件对应 1 个 OBJ)。

  3. 链接 :合并多个 OBJ 文件 + 库文件,生成EXE 可执行文件

  4. IDE:集成编辑器、编译器、链接器、调试器(如 VS)。

代码示例(简单流程示意)

复制代码
// 1. 编写源代码(main.cpp)
#include <iostream>
int main() {
    return 0;
}
// 2. 编译:main.cpp → main.obj
// 3. 链接:main.obj + 库文件 → main.exe
// 4. 运行:双击main.exe

三、头文件与引用

概念

头文件(.h)用于共享代码内容,通过#include引入源文件。

特性

  1. 预处理命令#include,本质是将头文件内容复制到引用位置。

  2. 头文件区别 :C 语言头文件(如stdio.h)必须加.h;C++ 标准头文件(如iostream)可省略.h

  3. 引用符号

    <>:优先查系统目录,用于系统头文件

    "":先查项目目录,再查系统目录,用于自定义头文件

代码示例

复制代码
// 引用系统头文件(尖括号)
#include <iostream>
// 引用C语言头文件(加.h)
#include <stdio.h>
// 引用自定义头文件(双引号)
#include "myheader.h"

四、项目结构

概念

C/C++ 程序需唯一入口,VS 通过解决方案和项目管理代码。

特性

  1. 入口函数main(),程序必须从这里执行,有且仅有一个

  2. VS 结构 :1 个解决方案含多个项目;需运行的项目设为启动项目(名称加粗)。

代码示例(主函数)

复制代码
#include <iostream>
int main() { // 唯一入口
    std::cout << "程序运行" << std::endl;
    return 0;
}

五、VS 常用快捷键

概念

提升开发效率的常用操作快捷键。

特性

  1. 运行调试

    Ctrl+F5:运行(不调试)

    F5:开始调试

    F10:逐过程调试(跳过函数)

    F11:逐语句调试(进入函数)

  2. 代码操作

    断点:代码左侧竖条点击

    F12:转到定义;Alt+F12:查看定义

    注释:Ctrl+K→Ctrl+C;取消注释:Ctrl+K→Ctrl+U

  3. 注释格式 :单行//;多行/* ... */

六、进制转换

概念

以二进制为桥梁,实现十进制、八进制、十六进制互转。

特性

  1. 核心数列:2 的幂(1、2、4、8、16、32、64、128)。

  2. 转换规则

    十进制→二进制:拆分为 2 的幂之和。

    二进制→八进制:右往左每 3 位一组,不足补 0。

    二进制→十六进制:右往左每 4 位一组,不足补 0。

  3. 标识 :八进制以0开头;十六进制以0x/0X开头。

示例

  • 十进制 168 → 二进制10101000 → 八进制0250 → 十六进制0xA8

七、码制转换

概念

整数(正 / 负 / 零)在计算机中以补码存储,涉及原码、反码、补码。

特性

  1. 正数 / 无符号数 :原码、反码、补码三码合一

  2. 负数

    原码:符号位为 1,其余为真值二进制。

    反码:符号位不变,其余位按位取反。

    补码:反码 + 1;补码求原码等价于再求一次补码。

  3. char 类型 :1 字节(8 位);有符号范围-128~127,无符号0~255

示例

  • 有符号 char:10000000 → -128;01111111 → 127

八、字符编码

概念

给字符分配唯一二进制编号(如 ASCII),电脑存储字符实际存编码二进制。

特性

  1. ASCII 关键值

    数字0~9:48~57

    大写A~Z:65~90

    小写a~z:97~122

  2. 字符集:编码规范集合(类似密码本)。

代码示例

复制代码
#include <iostream>
int main() {
    char c = 'A';
    std::cout << (int)c; // 输出65(A的ASCII值)
    return 0;
}

九、数据类型

概念

定义变量存储数据的类型,决定内存空间和取值范围。

特性

  1. 基本类型

    类型 大小 说明
    void - 空类型
    int 4 字节 整型
    short 2 字节 短整型
    long 8 字节 长整型
    float 4 字节 单精度浮点
    double 8 字节 双精度浮点
    char 1 字节 字符型
    bool 1 字节 布尔型(C++ 独有,true/false)
  2. 修饰符signed(默认,可省略)、unsignedshortlong

  3. 变量初始化 / 赋值 :初始化(定义时赋值)、赋值(定义后赋值);未初始化变量为内存残留值(如0xCC)。

  4. sizeof:求类型 / 变量占用内存大小。

代码示例

复制代码
#include <iostream>
int main() {
    int a = 0; // 定义并初始化
    double b;
    b = 3.14; // 先定义后赋值
    std::cout << sizeof(int); // 输出4
    return 0;
}

十、char 类型详解

概念

1 字节字符型,可存字符或整数,区分字符与字符串。

特性

  1. 赋值方式:单引号字符、整数、转义字符。

  2. 字符 vs 字符串

    字符'A':1 字节,单引号。

    字符串"A":2 字节(末尾自动补\0结束符),双引号。

  3. 转义字符\开头,如\n(换行)、\t(制表符)、\'(单引号)、\\(反斜杠)、\x41(十六进制字符)。

代码示例

复制代码
#include <iostream>
int main() {
    char c1 = 'A';
    char c2 = 65;
    char c3 = '\n';
    std::cout << c1 << c2 << c3;
    return 0;
}

十一、数据溢出

概念

变量存储数据超出类型取值范围,自动调整数值。

特性

  1. 溢出规则:当前值 ± 范围大小,直至落在范围内(如 char 存 128 → -128)。

  2. 溢出时机存储时溢出,整数运算默认 int(4 字节),运算过程不溢出。

  3. 类型提升:运算时自动向范围大、精度高的类型转换(如 int×double→double)。

  4. float 后缀 :小数默认 double,float 需加f/F(如3.14f)。

代码示例

复制代码
#include <iostream>
int main() {
    char c = 128; // 溢出
    std::cout << (int)c; // 输出-128
    return 0;
}

十二、输入输出

概念

C 语言用printf/scanf,C++ 用cout/cin实现数据输入输出。

特性

1. C 语言:printf(输出)
  • 占位符:%d(int)、%f(float/double)、%c(char)、%s(字符串)、%o(八进制)、%x(十六进制)。

  • 格式控制:%.3f(保留 3 位小数)、%4.2f(总宽 4 位,2 位小数)、%-4.2f(左对齐)。

2. C 语言:scanf(输入)
  • 需加&取地址符;格式需与输入严格匹配;VS 新版可用scanf_s替代。
3. C++:cout(输出)
  • 头文件<iostream>,需std命名空间;endl换行并清空缓冲区。
4. C++:cin(输入)
  • 无需格式符、无需取地址符;空格 / 回车分隔输入,更便捷。

代码示例

复制代码
// C语言输入输出
#include <stdio.h>
int main() {
    int a;
    scanf("%d", &a);
    printf("值:%d", a);
    return 0;
}
​
// C++输入输出
#include <iostream>
using namespace std;
int main() {
    int a;
    cin >> a;
    cout << "值:" << a << endl;
    return 0;
}

十三、其他知识点

概念

补充项目文件、常量、标识符、字符操作相关基础。

特性

  1. sln 文件:VS 解决方案文件,双击打开项目。

  2. 常量const修饰常量、字面量(如 10、"abc")。

  3. 标识符规则:不含美元符号,其余同通用规范。

  4. 字符操作:利用 char 可存字符 / 整数的特性,实现大小写转换、数字转换、字符串加密。

相关推荐
sheeta19982 小时前
LeetCode 补拙笔记 日期:2026.05.29 题目:1559. 二维网格图中探测环
笔记·算法·leetcode
不羁的木木2 小时前
ArkWeb实战学习笔记02-环境搭建与基础配置
笔记·学习·harmonyos
stars-he2 小时前
SPICE编程与仿真学习笔记:从网表到瞬态分析
笔记·学习·硬件工程
逆向命运2 小时前
PC企微搜索手机号窗口绕过
c语言·汇编·c++·飞书·企业微信
.千余2 小时前
【C++】C++核心语法:函数重载与缺省参数原理与避坑
c语言·开发语言·c++·经验分享·笔记·git·学习
fpcc2 小时前
C++编程实践——提高缓存的命中
c++·缓存
元气少女小圆丶2 小时前
SenseGlove Nova 2+Unity开发笔记3
笔记·unity·游戏引擎
SoftLipaRZC2 小时前
C语言内存函数完全指南:memcpy/memmove/memset/memcmp
c语言·开发语言
小张成长计划..2 小时前
【C++】37:IO库(扩展)
c++