赞
踩
#include <iostream> // 头文件
using namespace std; //使用std命名空间
//程序执行的入口
int main() {
// std::cout << "Hello, World!" << std::endl;
//输出 HelloWorld
cout << "hello";
return 0;
}
;
结束,表明一个逻辑实体的结束asm | else | new | this |
---|---|---|---|
auto | enum | operator | throw |
bool | explicit | private | true |
break | export | protected | try |
case | extern | public | typedef |
catch | false | register | typeid |
char | float | reinterpret_cast | typename |
class | for | return | union |
const | friend | short | unsigned |
const_cast | goto | signed | using |
continue | if | sizeof | virtual |
default | inline | static | void |
delete | int | static_cast | volatile |
do | long | struct | wchar_t |
double | mutable | switch | while |
dynamic_cast | namespace | template |
三字符组 | 替换 |
---|---|
??= | # |
??/ | \ |
??’ | ^ |
??( | [ |
??) | ] |
??! | | |
??< | { |
??> | } |
??- | ~ |
单行注释:// 注释说明
多行注释:/* 注释说明 */
嵌套注释:#if 0 注释说明 #else 注释说明 #end if
#if 0
cout << "\nHello, World!" << endl;
#else
cout << "\nHello, Chinese!" << endl;
#endif
类型 | 关键字 |
---|---|
布尔型 | bool |
字符型 | char |
整型 | int |
浮点型 | float |
双浮点型 | double |
无类型 | void |
宽字符型 | wchar_t |
//定义宽字符字面量
wchar_t wideChar = L'C';
wchar_t wideChars[] = L"AA";
//使用宽字符输出流输出宽字符
wcout << L"\nThe wide character is: " << wideChar;
wcout << L"\nThe wide character is: " << wideChars;
cout << "\nThe wide character is: " << wideChar << endl;
/**
* The wide character is: C
* The wide character is: AA
* The wide character is: 67
*/
类型 | 位 | 范围 |
---|---|---|
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 个宽字符 |
typedef type newname;
typedef int myInt;
myInt num;
语法:
enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],
...
标识符[=整型常数]
} 枚举变量;
注意:
enum Color{ Red, Green, Blue } c; //将Blue赋值给c c=Blue; cout << "c=" << c << endl; enum Color2{ red, //添加初始值为5,后面blue就为6 green=5, blue } c2; //将blue赋值给c2 c2=blue; cout << "c2=" << c2 << endl; enum Color3{ reds, greens=5, //将reds的值赋给blues blues = reds } c3; //将blues赋值给c3 c3 = blues; cout << "c3=" << c3 << endl;
静态转换(static_cast)
int i =10;
float f = static_cast<float>(i);
cout << "f=" << f << endl;
float floats = 188888.0;
int ints = static_cast<int>(floats);
cout << "ints=" << ints << endl;
动态转换(dynamic_cast)
class Base {};
class Derived : public Base {};
Base* ptr_base = new Derived;
Derived* ptr_derived = dynamic_cast<Derived*>(ptr_base); // 将基类指针转换为派生类指针
https://www.runoob.com/cplusplus/cpp-data-types.html
常量转换(const_cast)
将const类型的对象转为非const类型的对象
只能用于转换掉const属性,不能改变对象的类型
int& i = const_cast<int&>(myConst);
cout << "i=" << i << endl;
const小解
// 常量变量 const int myConst = 10; cout << "myConst=" << myConst << endl; // 常量指针 // 指向常量变量 const int* ptrToConst = &myConst; cout << "ptrToConst=" << *ptrToConst << endl; // 指向普通变量 int value = 12; int* const constPtr = &value; cout << "constPtr=" << *constPtr << endl; // 常量函数 class MyClass{ public: int getValue() const{ return value; } private: int value =13; }; MyClass myClass; cout << "MyClass.getValue=" << myClass.getValue() << endl; // 常量引用 void myFunc(const MyClass& ref){ //ref 不能绑定其它对象,只能绑定MyClass }; // 常量表达式 constexpr float PI = 3.1415926f; cout << "PI=" << PI << endl;
重新解释转换(reinterpret_cast)
将一个数据类型的值重新解释为另一个数据类型的值,通常用于在不同的数据类型之间进行转换
不会进行运行时类型检查
int values = 10;
float f = reinterpret_cast<float&> (values);
cout << "f=" << f << endl;
类型 | 描述 |
---|---|
bool | 布尔类型,存储值 true 或 false,占用 1 个字节。 |
char | 字符类型,用于存储 ASCII 字符,通常占用 1 个字节。 |
int | 整数类型,通常用于存储普通整数,通常占用 4 个字节。 |
float | 单精度浮点值,用于存储单精度浮点数。单精度是这样的格式,1 位符号,8 位指数,23 位小数,通常占用4个字节。 |
double | 双精度浮点值,用于存储双精度浮点数。双精度是 1 位符号,11 位指数,52 位小数,通常占用 8 个字节。 |
void | 表示类型的缺失。 |
wchar_t | 宽字符类型,用于存储更大范围的字符,通常占用 2 个或 4 个字节。 |
int
:用于表示整数,通常占用4个字节。short
:用于表示短整数,通常占用2个字节。long
:用于表示长整数,通常占用4个字节。long long
:用于表示更长的整数,通常占用8个字节。float
:用于表示单精度浮点数,通常占用4个字节。double
:用于表示双精度浮点数,通常占用8个字节。long double
:用于表示更高精度的浮点数,占用字节数可以根据实现而变化。char
:用于表示字符,通常占用1个字节。wchar_t
:用于表示宽字符,通常占用2或4个字节。char16_t
:用于表示16位Unicode字符,占用2个字节。char32_t
:用于表示32位Unicode字符,占用4个字节。bool
:用于表示布尔值,只能取true
或false
。enum
:用于定义一组命名的整数常量。type*
:用于表示指向类型为type
的对象的指针。type[]
或type[size]
:用于表示具有相同类型的元素组成的数组。struct
:用于定义包含多个不同类型成员的结构。class
:用于定义具有属性和方法的自定义类型。union
:用于定义一种特殊的数据类型,它可以在相同的内存位置存储不同的数据类型。char c = '0';
,ASCII码是48,内存中表示8位为48告诉编译器在哪里创建变量的存储,以及如何创建变量的存储
数据类型 变量名 = 值
数据类型必须是一个有效的C++数据类型,可以是char、wchar_t、int、float、double、bool、用户自定义对象
不带初始化的定义:带有静态存储持续时间的变量会被隐式初始化为NULL(所有字节的值都是0),其它所有变量的初始值是未定义的
变量声明向编译器保证变量以给定的类型和名称存在
extern关键字用于声明一个变量、函数在别处定义的,不是由当前定义点控制的,可以告诉编译器该名称是一个外部链接的全局变量或函数,并且定义在程序的其他地方
// file1.cpp
int globalVar = 42; // 定义全局变量
// file2.cpp
extern int globalVar; // 声明全局变量
变量声明可以定义声明多次,但是变量定义只能定义一次
因为编译cpp文件,是从上往下进行编译的,但这时会有其它函数在main函数的下方,这时就需要在main函数上方声明该函数,才能在main函数中去执行其它函数,(被调用的函数要在调用的函数之前声明)
// // Created by 16690 on 2024/4/18. // #include <iostream> using namespace std; // 变量声明 extern int a, b; extern int c; extern float f; extern int d(); int main () { // 变量定义 int a,b; int c; float f; // 实际初始化 a = 10; b = 20; c = a + b; cout << c << endl ; cout << d() << endl ; f = 70.0/3.0; cout << f << endl ; return 0; } int d(){ return 11; }
局部作用域:在函数内部声明的变量具有局部作用域,它们只能在函数内部访问。局部变量在函数每次被调用时被创建,在函数执行完后被销毁。
全局作用域:在所有函数和代码块之外声明的变量具有全局作用域,它们可以被程序中的任何函数访问。全局变量在程序开始时被创建,在程序结束时被销毁。
块作用域:在代码块内部声明的变量具有块作用域,它们只能在代码块内部访问。块作用域变量在代码块每次被执行时被创建,在代码块执行完后被销毁。
类作用域:在类内部声明的变量具有类作用域,它们可以被类的所有成员函数访问。类作用域变量的生命周期与类的生命周期相同。
在内部作用域中声明的变量与外部作用域中变量同名,则内部作用域中的变量将覆盖外部作用域中的变量
// // Created by 16690 on 2024/4/18. // #include <iostream> using namespace std; int main(void) { //局部变量声明 int a, b, c; //实际初始化 a = 10; b = 20; c = a + b; cout << "c=" << c << endl; return 0; }
// // Created by 16690 on 2024/4/18. // #include <iostream> using namespace std; //全局变量声明 int f; int main(void) { //局部变量声明 int a, b, c; //实际初始化 a = 10; b = 20; c = a + b; cout << "c=" << c << endl; return 0; }
// // Created by 16690 on 2024/4/18. // #include <iostream> using namespace std; //全局变量声明 int f = 10; int main(void) { //局部变量声明 int a, b, c; //实际初始化 a = 10; b = 20; c = a + b; int f = 20; cout << "c=" << c << endl; cout << "f=" << f << endl; return 0; }
// // Created by 16690 on 2024/4/18. // #include <iostream> using namespace std; int main(void) { int a = 10; { int a = 20; cout << "块变量=" << a << endl; //块变量=20 } cout << "外部变量=" << a << endl; //外部变量=10 return 0; }
// // Created by 16690 on 2024/4/18. // #include <iostream> using namespace std; class MyClass { public: // 类作用域变量 static int class_var; }; int MyClass::class_var = 30; int main() { MyClass myClass; cout << "类作用域变量=" << myClass.class_var << endl; //类作用域变量=30 return 0; }
数据类型 | 初始化默认值 |
---|---|
int | 0 |
char | ‘\0’ |
float | 0 |
double | 0 |
pointer | NULL |
前缀指定基数:0x 或 0X 表示十六进制,0表示八进制,不带前缀默认表示十进制
可以带一个后缀,后缀是U和L的组合,U表示无符号整数(unsigned)L表示长整数(long)
后缀可以大写,也可以小写,U和L的顺序任意,但是不能重复
括在单引号中,若常量以 L 开头,则表示它是一个宽字符常量(例如 L’x’),就必须存储在wchar_t类型的变量中
否则就是一个窄字符变量(例如 ‘x’),就可以存储在char类型的简单变量中
转义字符
转义序列 | 含义 |
---|---|
\ | \ 字符 |
’ | ’ 字符 |
" | " 字符 |
? | ? 字符 |
\a | 警报铃声 |
\b | 退格键 |
\f | 换页符 |
\n | 换行符 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ooo | 一到三位的八进制数 |
\xhh . . . | 一个或多个数字的十六进制数 |
括在双引号中,一个字符串包含类似于字符常量的字符:普通的字符、转义序列、通用字符
string greeting = "hello,runob";
cout << greeting << endl;
cout << "\n";
string greeting2 = "hello, \runoob";
cout << greeting2;
语法:#define 常量名 常量值
// // Created by 16690 on 2024/4/18. // #include <iostream> using namespace std; #define LENGTH 10 #define WIDTH 5 #define NEWLINE '\n' int main(void){ int area; area = LENGTH * WIDTH; cout << area << endl; cout << NEWLINE; }
语法:const type 常量名 常量值
// // Created by 16690 on 2024/4/18. // #include <iostream> using namespace std; int main(void) { const int LENGTHS = 10; const int WIDTHS = 5; const char NEWLINES = '\n'; int areas; areas = LENGTHS * WIDTHS; cout << areas << endl; cout << NEWLINES; }
定义为const后的常量,程序对其中只能读不能修改
const 关键字出现在 * 的左边:指针指向的内容不能被修改。(const int *p;)
const 关键字出现在 * 的右边:指针本身不能被修改。(int *const p=&a;)
const 关键字出现在 * 的两边:指针指向的内容和指针本身都不能被修改。(const int* const p=&a;)
#include <iostream> using namespace std; int main() { int a=1; int b; /**指向const的指针,指针指向的内容不能被修改**/ const int *p1; int const *p2; /**const指针,指针本身不能被修改,必须初始化**/ int *const p3=&a; /*指针本身和它指向的内容都是不能被改变的所以也得初始化*/ const int* const p4=&a; int const* const p5=&b; p1=p2=&a; //true (指针本身的值可以改变) *p1=*p2=8; //false(指针指向的内容不能被修改) *p3=5; //true (指针指向的内容可以改变) p3=p1; //false(指针本身的值不能改变) p4=p5;//false(指针本身和它指向的内容都是不能被改变) *p4=*p5=4; //false(指针本身和它指向的内容都是不能被改变) return 0; }
修饰整型 | 修饰字符型 | 修饰双精度型 |
---|---|---|
signed、unsigned、long、short | signed、unsigned | long |
限定符 | 含义 |
---|---|
const | const 定义常量,表示该变量的值不能被修改。 |
volatile | 修饰符 volatile 告诉该变量的值可能会被程序以外的因素改变,如硬件或其他线程。。 |
restrict | 由 restrict 修饰的指针是唯一一种访问它所指向的对象的方式。只有 C99 增加了新的类型限定符 restrict。 |
mutable | 表示类中的成员变量可以在 const 成员函数中被修改。 |
static | 用于定义静态变量,表示该变量的作用域仅限于当前文件或当前函数内,不会被其他文件或函数访问。 |
register | 用于定义寄存器变量,表示该变量被频繁使用,可以存储在CPU的寄存器中,以提高程序的运行效率。 |
//定义常量NUM,值不能修改
const int NUM = 10;
//定义指向常量的指针,指针所指的值不可修改
const int* ptr =&NUM;
int const* ptr2 =&NUM;
//定义变量num,其值可能会在未知的时间被改变
volatile int num = 20;
往往用于多线程的修饰
volatile boolean isNext = false;
Thread A() {
// 第一个工作
// isNext = true;
}
Thread B (){
if (isNext) {
// 第二个工作
}
}
class Example{
public:
int get_value() const{
//const关键字表示该成员函数不会修改对象中的数据成员
return value_;
}
void set_value(int value) const{
//mutable关键字允许在const成员函数中修改成员变量
value_ = value;
}
private:
//mutable 修饰成员变量
mutable int value_;
};
void example_function(){
//static关键字使变量count存储在程序声明周期内都存在
static int count = 0;
}
void example_functions(register int num){
//register 关键字建议编译器将变量num存储在寄存器中
//但事实上是否存储在寄存器中由编译器决定
}
存储类定义C++程序中变量/函数的范围(可见性)和生命周期,说明符放置在它们所修饰的类型之前
声明变量时根据初始化表达式自动推断该变量的类型
声明函数时函数返回值的占位符
auto f1=3.14; //double
auto s1("hello"); //const char*
auto z = new auto(9); //int*
// auto x1 = 5,x2 =5.0,x3 = 'r'; //必须初始化为同一类型
cout << f1 << endl;
cout << s1 << endl;
cout << *z << endl;
// // Created by 16690 on 2024/4/18. // #include <iostream> using namespace std; int main(void){ { register int miles; miles = 100; cout << miles << endl; } return 0; }
// // Created by 16690 on 2024/4/18. // #include <iostream> using namespace std; //函数声明 void func(void); //定义全局变量 static int count = 10; int main(void){ while( count --){ func(); } return 0; } void func(void){ //局部静态变量 static int i = 5; i++; cout << "变量i为 " << i ; cout << ",变量count为 " << count << endl; }
static修饰的成员变量
静态成员变量是先于类的对象而存在
这个类的所有对象共用一个静态成员
如果静态成员是公有的,那么可以直接通过类名调用
静态成员数据在声明时候类外初始化
static修饰的成员函数
main.cpp
#include <iostream> // 头文件
using namespace std; //使用std命名空间
int count;
//声明全局函数
extern void write_extern();
//程序执行的入口
int main() {
count = 5;
//调用support中的write_extern函数
write_extern();
return 0;
}
support.cpp
//
// Created by 16690 on 2024/4/18.
//
#include <iostream>
using namespace std;
extern int count;
void write_extern(void)
{
cout << "count: " << count << endl;
}
用于从键盘获取数据
语法:cin >> 接受输入的变量;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。