清除C++阅读障碍

c++其实语法上和java差不多,但是c++读起来却比java吃力。我认为操作符和定义好的方法名称是阻碍代码阅读的最大苦难。对较多定义好的函数不够熟悉。所以在此记录下常用的操作符和函数。如果有遇到不认识的函数可以通过man <method name>查看。

操作符

1.取地址符&和取值符*

2.->和.

  • ->通过对象的指针对象,访问结构体中的数据。
  • .直接通过对象,访问结构体中的数据。

3.sizeof

sizeof是运算符,不是函数。计算变量(或类型)所占字节空间的大小。 ps:可以通过指针地址的size来看64位还是32位。下图中指针sizeof为8个字节,也就是64位。

4.include<>和""的区别

表示编译器在搜索头文件时的顺序不同,<>表示从系统目录下开始搜索,然后再搜索PATH环境变量所列出的目录,不搜索当前目录,""是表示从当前目录开始搜索,然后是系统目录和PATH环境变量所列出的目录。 所以,系统头文件一般用<>,用户自己定义的则可以使用"",加快搜索速度。

5.#if #elif #else #endif #if defined #if !defined #ifdef #ifndef

条件编译语句,不满足条件的结构体不参与编译。

#if defined等价于#ifdef

#if !defined等价于#ifndef

后面接的symbol是指有没有定义过,即使定义的值为0,#ifdef也是true。

避免重复引入的例子:

c 复制代码
//一般使用前面两个下划线,中间一个下划线,后面两个下划线
#ifndef __TEST_H__
#define __TEST_H__
int Add(int x, int y);
#endif
c 复制代码
#pragma once
int Add(int x, int y);

6.struct

结构体

c 复制代码
struct student {
    int age;
    int sex;
}

7.using namespace ::

c 复制代码
#include <iostream>
using namespace std;
 
// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
}
// 第二个命名空间
namespace second_space{
   void func(){
      cout << "Inside second_space" << endl;
   }
}
using namespace first_space;
int main ()
{
 
   // 调用第一个命名空间中的函数
   func();
   // 调用第一个命名空间中的函数
   first_space::func(); 
   // 调用第二个命名空间中的函数 
   second_space::func();
   
   return 0;
}

static_cast

c 复制代码
int i = 10;
float f = static_cast<float>(i); // 静态将int类型转换为float类型

int32_t uint32_t 及size_t

size_t主要用于计数,他就是一个unsinged int的重定义. 如sizeof函数返回值类型即为size_t。在不同位的机器中所占的位数也不同,size_t是无符号数 在不同机器中定义不同: 在32位机器中定义为:typedef unsigned int size_t; (4个字节) 在64位机器中定义为:typedef unsigned long size_t;(8个字节)

使用 size_t 来代替 int 或 unsigned 可以保证在同一个平台中,始终得到得到一个数据类型或变量的字节大小,保证了程序对该数据类型或变量的统计方式始终一致,不会因为平台的改变而出现错误。

stdint.h源码 size_t 的声明是实现相关的。它出现在一个或多个标准头文件中,比如stdio.h 和stblib.h,典型的定义如下:

c 复制代码
#ifndef __SIZE_T
#define __SIZE_T
typedef unsigned int size_t;
#endif

nullptr

空指针

const、constexpr

关键字 constexpr 是在 C++ 中引入的11,并在C++ 14中进行了改进。它意味着不断的表达。像 一样 const ,它可以应用于变量:当任何代码尝试修改该值时,会引发编译器错误。与 不同 constconstexpr 也可以应用于函数和类构造函数。 constexpr 指示该值或返回值是常量,并且在可能的情况下,在编译时计算。 www.cnblogs.com/ljwgis/p/13...

static、auto、extern、register

learn.microsoft.com/zh-cn/previ...

函数

  1. printf 控制台输出
  2. memset

数据类型

类型 范围
char 1 个字节 -128 到 127 或者 0 到 255
unsigned char 1 个字节 0 到 255
signed char 1 个字节 -128 到 127
int 4 个字节 -2147483648 到 2147483647
unsigned int 4 个字节 0 到 4294967295
signed int 4 个字节 -2147483648 到 2147483647
short int 2 个字节 -32768 到 32767
unsigned short int 2 个字节 0 到 65,535
signed short int 2 个字节 -32768 到 32767
long int 8 个字节 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
signed long int 8 个字节 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long int 8 个字节 0 到 18,446,744,073,709,551,615
float 4 个字节 精度型占4个字节(32位)内存空间,+/- 3.4e +/- 38 (~7 个数字)
double 8 个字节 双精度型占8 个字节(64位)内存空间,+/- 1.7e +/- 308 (~15 个数字)
long long 8 个字节 双精度型占8 个字节(64位)内存空间,表示 -9,223,372,036,854,775,807 到 9,223,372,036,854,775,807 的范围
long double 16 个字节 长双精度型 16 个字节(128位)内存空间,可提供18-19位有效数字。
wchar_t 2 或 4 个字节 1 个宽字符

注意,各种类型的存储大小与系统位数有关,但目前通用的以64位系统为主。

关键字

C++ 的关键字(保留字)完整介绍 | 菜鸟教程 (runoob.com)

相关推荐
hehelm8 分钟前
C++11 新特性
c++
我不是懒洋洋11 分钟前
【数据结构】排序算法(直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序、计数排序)
c语言·数据结构·c++·经验分享·算法·排序算法
邪修king13 分钟前
UE5:C++ 实现 游戏逻辑 ↔ UI 双向联动
c++·游戏·ue5
汉克老师10 小时前
GESP2025年3月认证C++五级( 第三部分编程题(1、平均分配))
c++·算法·贪心算法·排序·gesp5级·gesp五级
智者知已应修善业13 小时前
【51单片机2个按键控制流水灯运行与暂停】2023-9-6
c++·经验分享·笔记·算法·51单片机
云泽80814 小时前
C++11 核心特性全解:列表初始化、右值引用与移动语义实战
开发语言·c++
AI进化营-智能译站15 小时前
ROS2 C++开发系列12-用多态与虚函数构建可扩展的ROS2机器人行为模块
开发语言·c++·ai·机器人
Morwit15 小时前
QML组件之间的通信方案(暴露子组件)
c++·qt·职场和发展
qeen8716 小时前
【数据结构】建堆的时间复杂度讨论与TOP-K问题
c语言·数据结构·c++·学习·
图码16 小时前
如何用多种方法判断字符串是否为回文?
开发语言·数据结构·c++·算法·阿里云·线性回归·数字雕刻