C++ 基础

本文详细介绍了C语言的特点,包括代码量小、执行速度快等,并指出其在后台、程序库、游戏引擎等领域的广泛应用。同时,阐述了C语言的HelloWorld程序实现、编译步骤,以及数据类型、进制转换、变量和常量的概念。还提到了C语言中的系统函数、内存管理和运算符,并对比了scanf和getchar函数。最后,文章讨论了C语言中的选择结构和循环控制。
摘要由CSDN通过智能技术生成

C语言特点

  • 优点:
    1. 代码量小
    2. 执行速度快
    3. 功能强大
    4. 变成自由
  • 缺点:
    1. 写代码周期长
    2. 可移植性差
    3. 过于自由,经验不足容易出错
    4. 平台库依赖较多

C 语言领域

  • 后台
  • 程序库
  • 游戏引擎
  • 开发语言
  • 驱动 系统
  • 任何设备
  • 常见的:
    1. 游戏
    2. 服务器
    3. 桌面
    4. 操作系统

HelloWorld程序

使用工具VS2015

步骤

  1. 新建项目
  2. 选择 v c++
  3. win32 控制应用程序
  4. 应用程序设置中,选择空项目,安全并发生命周期可以不选
  5. 查看解决方案管理器(管理源文件用),如果没有此栏可以从视图中打开
  6. 源文件需要从工程中源文件目录下进行创建,添加-> 新建项
  7. 我们添加项的时候同命名为.c即可 就是c语言文件
  8. 编写代码如下:
#include <stdio.h>
int main()
{
	printf("hello_world 程序");
	return 0;
}
  1. Ctrl+F5进行直接执行
  2. gcc 的执行方式
    - 需要安装qt 使用其中tools的gcc
    - 配置全局环境变量path
    - 使用gcc编译代码 gcc **.c -o **.exe ,这里 -o 是生成目标可执行文件

C语言编译步骤

  1. 预处理
    • gcc -E ***.c -o ***.i
    • 这是生成预处理文件
    • #号开头的是预处理指令,.h是头文件,对一些函数声明用的
    • C 语言中的注释 // /* */,注释的不会被编译到文件中
    • 宏替换
      - #define 这个是用来定义的,定义的宏 类似于Java中的属性变量
    • 预处理的时候不会检擦语法错误
    • 条件编译 #if 条件 #endIf , 0在c语言中是不成立
      - 这个条件是用来那个平台的驱动,这个平台是否使用这段代码
      - -D 可以在后面动态添加编译条件
  2. 编译
    - -S .s 文件 生成的汇编语言,汇编语言,会检查语法错误
  3. 汇编
    - -c .o文件 ,这是二进制文件,不可执行的文件
  4. 链接
    - 设置运行环境 添加需要的库文件
    - 命令: gcc **.o -o **.exe

System 函数

在程序启动,可以启动另一个程序

  • 引入依赖如下:
#include <stdlib.h>
  • 系统暂停,按任意键继续,指令:
system("pause")

CPU 内部结构与寄存器

  • 寄存器是Cpu的内部最基本的存储单元,存储CPU计算的数据

数据类型

  1. 分配内存空间大小
  2. 作用: 数据类型就是告诉编译器 我这个数据在内存中需要多大空间

常量

程序运行中不能改变的量

  1. 整形常量 : 1 200
  2. 字符常量 : ’a‘
  3. 字符串常量: ”aaaa“
  4. 浮点型常量: 2.2222

变量

程序运行中可以被改变,存在内存中
变量需要定义
在内存中开辟空间
需要声明
定义形式 : 数据类型: 变量名

  1. int 类型占4个字节
  2. short 2个字节
  3. long 在win4字节 linux 32位4字节 64位 8字节
  4. char类型 1个
  5. extern 告诉编译器,我有这个变量尚未定义
  6. const 修饰的变量
    • const修饰的变量不能被修改

进制

什么是十进制:

  • 逢十进一 0-9
    什么是二进制
  • 逢二进一 0-1
    什么八进制
  • 逢八进一 0-7

C 语言中不能书写二进制

符号位

有符号数 默认: 可以表示正数和负数
无符号数: 只能表示正数
第一位是符号位,如果是0 则是正数 如果是1则是负数

数的范围

  • 列子: char 有符号 -128-127 表示256个数,无符号数0-255

原码

数的最原始的二进制码
负数在计算机中存储原码问题:

  • 运算结果不正确
  • 0的状态有两种

反码

正数不变,负数反码(符号位不变,其他位数取反)
反码去存值正确,但是0的状态还是会有两种

补码

正数不变,负数补码等于反码加1

进制的输出格式

  • %d 十进制 有符号打印 会转成32位
  • %o 八进制
  • %x 十六进制
  • %#x 携带十六进制头的十六进制
  • %u 无符号 会转成32位

整型变量输入

  • scanf 从键盘读取数
  • 实例:
int main()
{
	int  sum = 0;
	int count = 0;
	scanf("%d %d", &sum, &count);


	printf("%d\n", sum);
	printf("%d\n", count);
	return 0;
}

测试变量长度关键字

sizeof : 测试数据类型的大小

浮点型

  • float 4个字节,能够保证7位有效数字
  • double 8个字节 精度15位

限定符

  1. extern 声明,告诉编译器有这个东西不开辟空间
  2. const 定义了一个变量不能改变;
  3. volatile 防止编译器优化 ,跟随每个变量,一般写驱动内核使用;
  4. register 建议将变量定义在寄存器,频繁使用计算的变量使用;

字符串

  1. 打印命令:
printf("%s\n", "我是你爹");
  1. 字符串 0 会被进行转移位 \0 ,这个0 == ‘\0’;

scanf 和 getchar 函数的比较

  • 作用: 都是从键盘读取一个字符;

运算符

算数运算符

加 减 乘 除

负值运算符

运算符优先等级

第一级
  1. [ ]
  2. ( )

相同优先级的会从右向左进行计算

逗号运算符,结果为最后一个运算

程序选择结构问题

  1. 顺序
    • 从上向下执行
  2. 选择
    • if
  3. 循环

数组名

数组名等于首元素(第0个)元素的地址,数组名+1 会跳过一个字节,数组名地址值+1 会跳过整个数组,数组名是常量不能被赋值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值