c++总结笔记(一)

计算机可以将程序转化为二进制指令(即机器码),并由CPU执行,CPU会按照指令的顺序依次执行每个指令。

C语言特点:

  • 简洁
  • 高效
  • 可移植
  • 模块化
  • 标准化

C语言的标准 

  • C89(C90)标准
  • C99标准
  • C11标准

导入 

使用include导入包含库文件

数据类型

数据类型的作用:编译器预算数据分配的内存空间大小

命令规则

规则说明:只能由数字、字母、下划线_组成;不能使用数字开头 不能使用关键字 驼峰命名

ASCII码 

大小写字母差32

布尔类型

C语言没有布尔类型数据,以0代表逻辑假,非0代表逻辑真; 使用stdbool.h中的bool

基本数据类型长度

   自定义的常量  

   #define PI 3.14
   const double pi2 = 3.14;

  数值存储方式 

  计算机底层都是存储数据都是采用二进制,但二进制也有几种,比如:原码、反码、补码。接下    来我们来看看他们之间的关系的意义作用。

  原码

  • 10 -> 0000 1010
  • -10 -> 1000 1010
  • -1 -> 1000 0001
  • 1 -> 0000 0001

   反码 (正数和原码相同)

   负数的反码是按位取反(但符号位不变)

  • 1 -> 0000 0001 -> 0000 0001
  • -1 -> 1000 0001 -> 1111 1110

  补码

正数的补码就是原码本身;

负数的补码就是在反码的基础上+1;

  • 1 -> 0000 0001 -> 0000 0001 -> 0000 0001
  • -1 -> 1000 0001 -> 1111 1110 -> 1111 1111

输出和输入

打印格式

对应数据类型

含义

%c

char

字符型,输入的数字按照ASCII码相应转换为对应的字符

%d

int

接受整数值并将它表示为有符号的十进制整数

%f

float

单精度浮点数

%s

char *

字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0‘结尾,这个'\0'即空字符)

%p

void *

以16进制形式输出指针

运算符

运算符

术语

示例

结果

&

按位与运算

011 & 101

2个都为1才为1,结果为001

|

按位或运算

011 | 101

有1个为1就为1,结果为111

^

按位异或运算

011 ^ 101

不同的为1,结果为110

~

取反运算

~011

100

<<

左移运算

1010 << 1

10100

>>

右移运算

1010 >> 1

0101

类型转换

  • 转换的方法有两种:
  • 自动转换(隐式转换):遵循一定的规则,由编译系统自动完成强制类型转换:把表达式的运算结果强制转换成所需的数据类型
  • 类型转换的原则:
  • 占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。(从小到大转

 程序执行的三大流程

顺序 分支 循环

可移植的类型

为了更好的兼容不同平台,我们在使用基本上数据类型的时候会采用可移植的类型,这些类型可以确保在不同的平台下稳定的运行。

跳转关键字

  • 循环和switch专属的跳转:break(不执行循环后续重复的代码退出)
  • 循环专属的跳转:continue(只退出当前)
  • 无条件跳转:goto

多文件编程

声明类: 声明方法用于 使用类方法调用

防止头文件重复包含:

#ifndef __SOMEFILE_H__
#define __SOMEFILE_H__

// 声明语句

#endif

#pragma once

// 声明语句

 实现类: 实现方法

 使用类  extern 导入 声明类参数 和方法

 extern int global_val;
 extern void printf_val();

指针变量的定义和使用

  • & 叫取地址,返回操作数的内存地址
  • * 叫解引用,指操作指针所指向的变量的值
  • 在定义变量时,* 号表示所声明的变量为指针类型

指针大小

  • 在32位平台,所有的指针(地址)都是32位(4字节)
  • 在64位平台,所有的指针(地址)都是64位(8字节)

指针步长

  • 指针步长指的是通过指针进行递增或递减操作时,指针所指向的内存地址相对于当前地址的偏移量。

野指针和空指针

野指针 没用指针 只有值

空指针  有指针 没数据

函数调用

 // 3种调用方法都可以
 func(1); // 最简便,最常用
 (&func)(2);
 (*func)(3);

回调函数

  • 函数指针变量做函数参数,这个函数指针变量指向的函数就是回调函数
  • 回调函数可以增加函数的通用性

// 定义函数,函数指针做形参
int calc(int a, int b, int (*p)(int, int)){
    // 通过函数指针变量调用函数,获取返回值
    int res = p(a, b);  
    return res;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/547681.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

阿里云Centos7下编译glibc

编译glibc 原来glibc版本 编译前需要的环境: CentOS7 gcc 8.3.0 gdb 8.3.0 make 4.0 binutils 2.39 (ld -v) python 3.6.8 其他看INSTALL, 但有些版本也不易太高 wget https://mirrors.aliyun.com/gnu/glibc/glibc-2.37.tar.gz tar -zxf glibc-2.37.tar.gz cd glibc-2.37/ …

Linux中断——嵌入式Linux驱动开发

参考正点原子I.MX6U嵌入式Linux驱动开发指南 一、简介 先来简单了解一般中断的处理方法&#xff1a; ①、使能中断&#xff0c;初始化相应的寄存器。 ②、注册中断服务函数&#xff0c;也就是向 irqTable 数组的指定标号处写入中断服务函数 ③、中断发生以后进入 IRQ 中…

YOLOv8改进 添加大核卷积序列注意力机制LSK

一、Large Separable Kernel Attention论文 论文地址:2309.01439.pdf (arxiv.org) 二、Large Separable Kernel Attention注意力结构 LSK通过使用大型可分离卷积核来提升注意力机制的效果。在传统的注意力机制中,常用的是小型卷积核,如1x1卷积,来计算注意力权重和特征表示…

坦桑尼亚公司注册

哈喽大家好我是小鱼~ 很多朋友想了解坦桑尼亚公司的注册信息&#xff0c;今天来给大家分享&#xff1a; 坦桑尼亚随着投资环境的不断改善&#xff0c;成为非洲区域贸易集团成员&#xff0c;更好的为公司提供了广阔的非洲市场基础和劳动力优势&#xff0c;与20多个国家签订了避…

海外云手机怎么解决tiktok运营难题?

最近打算做TikTok的商家越来越多了&#xff0c;而做TikTok的第一步就面临如何养号、涨粉的困境&#xff0c;本文将介绍如何通过海外云手机轻松解决这些问题。 早期大家用的比较多的&#xff0c;是真机科学上网的方法。但是这种方法&#xff0c;需要自己搭建海外环境&#xff0c…

【小程序】生成短信中可点击的链接

文章目录 前言一、如何生成链接二、仔细拜读小程序开发文档文档说明1文档说明2 总结 前言 由于线上运营需求&#xff0c;需要给用户发送炮轰短信&#xff0c;用户通过短信点击链接直接跳转进入小程序 一、如何生成链接 先是找了一些三方的&#xff0c;生成的倒是快速&#xf…

BCLinux8U6系统部署oceanbase分布式数据库社区版之二、数据库服务器准备

本文是在完成步骤一、准备 OBD 中控机后的第二步&#xff0c;准备3台oceanbase分布式数据库服务器。 前序步骤&#xff1a;BCLinux8U6系统部署oceanbase分布式数据库社区版之一、准备 OBD 中控机 一、服务器配置 1、服务器硬件配置 本例采用vmware虚拟机来构建测试平台&…

c++ 多文件编程

1.结构目录 声明类:用于声明方法,方便方法管理和调用&#xff1b; 实现类:用于实现声明的方法; 应用层:调用方法使用 写过java代码的兄弟们可以这么理解&#xff1a; 声明类 为service层 实现类 为serviceimpl层 应用层 为conlloter层 2.Dome 把函数声明放在头文件xxx.h中&…

端口映射软件可以做什么? 快解析如何设置端口映射?

说到端口映射&#xff0c;首先说说nat。简单地说&#xff0c;nat就是在局域网内部网络中使用内部地址&#xff0c;而当内部节点要与外部网络进行通讯时&#xff0c;就在网关处&#xff0c;将内部地址替换成公用地址&#xff0c;从而在外部公网&#xff08;internet&#xff09;…

自定义类似微信效果Preference

1. 为自定义Preference 添加背景&#xff1a;custom_preference_background.xml <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><item><shape android:s…

nginx的启动,systemd管理

service unit file文件通常由三部分组成&#xff1a; [Unit]&#xff1a;定义与Unit类型无关的通用选项&#xff1b;用于提供unit的描述信息、unit行为及依赖关系等 [Service]&#xff1a;与特定类型相关的专用选项&#xff1b;此处为Service类型 [Install]&#xff1a;定义…

AI人工智能学习指南:入门必备的五大步骤

人工智能的发展正以前所未有的速度推动着技术、商业和社会的变革。在这个迅速发展的领域中&#xff0c;个人掌握新技能和知识至关重要。在这篇文章中&#xff0c;我将为您提供一份人工智能学习指南&#xff0c;帮助您打开人工智能的大门。 1.了解人工智能的基本概念和应用 人工…

表单自定义系统源码:自主创建表单 带完整的安装代码包以及搭建教程

在当今信息化社会&#xff0c;表单作为一种常见的数据收集工具&#xff0c;广泛应用于各类网站和系统中。然而&#xff0c;传统的表单系统往往功能单一&#xff0c;缺乏灵活性&#xff0c;难以满足用户多样化的需求。下面&#xff0c;小编给大家分享一款表单自定义系统源码&…

OpenAI官宣位于东京的首个亚洲办公室,并将发布专为日语优化的GPT-4定制模型!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

vscode和pycharm等idea编写protobuf文件格式化

想在pycharm或者goland等idea中开发protobuf文件的话&#xff0c;可以安装一个插件&#xff1a;protocol-buffers 安装之后&#xff0c;proto文件就会支持高亮和格式化了。 如果是vscode想要编写proto文件&#xff0c;可以安装另外一个插件&#xff1a;vscode-proto3 安装后&a…

202303青少年软件编程(scratch图形化)等级考试试卷(四级)

第1题&#xff1a;【 单选题】 编写一段程序&#xff0c;从26个英文字母中&#xff0c;随机选出10个加入列表a。空白处应填入的代码是&#xff1f;&#xff08;&#xff09; A: B: C: D: 【正确答案】: C 【试题解析】 : 第2题&#xff1a;【 单选题】 运行以下代码&…

Matlab 将数据写入excel文件

Matlab 将数据写入excel文件 函数&#xff1a;writematrix 功能&#xff1a;将数据写入文件 语法 writematrix(A) writematrix(A,filename) writematrix(___,Name,Value) 说明 writematrix(A) 将同构数组 A 写入以逗号分隔的文本文件。文件名为数组的工作区变量名称&…

20240415,构造函数和析构函数,拷贝构造函数调用时机规则

二&#xff0c;对象的初始化和清理 2.1 构造函数和析构函数 解决初始化和清理问题&#xff0c;编译器自动调用&#xff0c;如果不提供&#xff0c;编译器提供&#xff0c;但空实现 构造函数&#xff1a;类名&#xff08;&#xff09;{ }&#xff1b;没用返回值也不写VOID&…

spring03:bean的自动装配

spring03&#xff1a;bean的自动装配 文章目录 spring03&#xff1a;bean的自动装配前言&#xff1a;一、 在xml中显示的配置&#xff1a;分析&#xff1a; People类&#xff1a;Cat类&#xff1a;Dog类&#xff1a;1. 在xml中显示的配置&#xff1a; 二、 隐式的自动装配bean【…

2048天的创作旅程:坚持与成长

纪念成为创作者的2048天 一、引言二、坚持创作三、创作心情四、技术成长五、小结 &#x1f4a1;一个热爱分享高性能服务器后台开发知识的博主&#xff0c;目标是通过理论与代码实践的结合&#xff0c;让世界上看似难以掌握的技术变得易于理解与掌握。技能涵盖了多个领域&#x…