> 文章列表 > 【C++入门学习:基本语法】为了缩短学习周期,只记录部分不懂的语法

【C++入门学习:基本语法】为了缩短学习周期,只记录部分不懂的语法

【C++入门学习:基本语法】为了缩短学习周期,只记录部分不懂的语法

文章目录

  • 一、程序结构
  • 二、定义变量声明变量
  • 三、变量作用域
  • 四、定义常量
  • 五、类型限定符号
  • 六、存储类
  • 七、运算符
  • 八、函数
  • 九、指针与引用
  • 十、C++ 的基本输入输出
  • 十一、“结构成员”和“类变量”引用

一、程序结构

#include <iostream>	// C++ 语言定义了一些头文件,这些头文件包含了程序中必需的或有用的信息。
using namespace std;	// 告诉编译器使用 std 命名空间。命名空间是 C++ 中一个相对新的概念。int main()	//main() 是程序开始执行的地方
{// 如果没有声明namespace,那就要使用  std::cout << "Hello" << "World"; cout << "Hello" << "World"; 	// 会在屏幕上显示消息 "Hello World"return 0;	// 终止 main( )函数,并向调用进程返回值 0
}

二、定义变量和声明变量

下面代码中,语句 extern int var;表示 var 在别的文件中已经定义,提示编译器遇到此变量时在其它模块中寻找其定义。语句 extern int ble = 10;表示定义了变量 ble,这一点需要注意。
注意:即使是 extern ,如果给变量赋值了,就是定义了。

extern int var; // 声明
extern int ble =10; // 定义
typedef int INT; // 声明
struct Node; // 声明
int value ; //声明 + 定义,因为C++会为value变量赋默认值

三、变量作用域

局部作用域:在函数内部声明的变量具有局部作用域,它们只能在函数内部访问。
全局作用域:在所有函数和代码块之外声明的变量具有全局作用域,它们可以被程序中的任何函数访问。
块作用域:在代码块内部声明的变量具有块作用域,它们只能在代码块内部访问。
类作用域:在类内部声明的变量具有类作用域,它们可以被类的所有成员函数访问。

注意:如果在内部作用域中声明的变量与外部作用域中的变量同名,则内部作用域中的变量将覆盖外部作用域中的变量。

#include <iostream>
using namespace std;int a = 20;		//全局作用域变量class MyClass {
public:static int class_var;  // 类作用域变量
};int main() {int g = 10;		// 局部作用域变量{int a = 20;  	// 块作用域变量}return 0;
}

四、定义常量

#define LENGTH 10  	// define方式定义
const int  LENGTH = 10;		// const方式定义

五、类型限定符号

类型限定符提供了变量的额外信息,用于在定义变量或函数时改变他们默认行为的关键字
【C++入门学习:基本语法】为了缩短学习周期,只记录部分不懂的语法

// const 实例
const int NUM = 10; // 定义常量 NUM,其值不可修改
const int* ptr = &NUM; // 定义指向常量的指针,指针所指的值不可修改
int const* ptr2 = &NUM; // 和上面一行等价
volatile 实例
volatile int num = 20; // 定义变量 num,其值可能会在未知的时间被改变// mutable 实例
class Example {
public:int get_value() const {return value_; // const 关键字表示该成员函数不会修改对象中的数据成员}void set_value(int value) const {value_ = value; // mutable 关键字允许在 const 成员函数中修改成员变量}
private:mutable int value_;
};// static 实例
void example_function() {static int count = 0; // static 关键字使变量 count 存储在程序生命周期内都存在count++;
}// register 实例
void example_function(register int num) {// register 关键字建议编译器将变量 num 存储在寄存器中// 以提高程序执行速度// 但是实际上是否会存储在寄存器中由编译器决定
}

六、存储类

存储类定义 C++ 程序中变量/函数的范围(可见性)和生命周期。

auto 存储类
auto 关键字用于两种情况:声明变量时根据初始化表达式自动推断该变量的类型、声明函数时函数返回值的占位符。

auto f=3.14;      //double
auto s("hello");  //const char*
auto z = new auto(9); // int*
auto x1 = 5, x2 = 5.0, x3='r';//错误,必须是初始化为同一类型

register 存储类
定义存储在寄存器中而不是 RAM(内存) 中的局部变量。

register int miles;

static 存储类
static 存储类指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。

extern 存储类
extern 存储类用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。当您使用 ‘extern’ 时,对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置。

mutable 存储类
mutable 说明符仅适用于类的对象,这将在本教程的最后进行讲解。它允许对象的成员替代常量。也就是说,mutable 成员可以通过 const 成员函数修改。

thread_local 存储类
使用 thread_local 说明符声明的变量仅可在它在其上创建的线程上访问。 变量在创建线程时创建,并在销毁线程时销毁。 每个线程都有其自己的变量副本。

七、运算符

算法运算符
【C++入门学习:基本语法】为了缩短学习周期,只记录部分不懂的语法
关系运算符
【C++入门学习:基本语法】为了缩短学习周期,只记录部分不懂的语法
逻辑运算符
【C++入门学习:基本语法】为了缩短学习周期,只记录部分不懂的语法
位运算符
【C++入门学习:基本语法】为了缩短学习周期,只记录部分不懂的语法
赋值运算符
【C++入门学习:基本语法】为了缩短学习周期,只记录部分不懂的语法

八、函数

函数声明、函数定义、函数调用

#include <iostream>
using namespace std;// 函数声明
int max(int num1, int num2);int main ()
{// 局部变量声明int a = 100;int b = 200;int ret;// 调用函数来获取最大值ret = max(a, b);cout << "Max value is : " << ret << endl;return 0;
}// 函数返回两个数中较大的那个数
int max(int num1, int num2) 
{// 局部变量声明int result;if (num1 > num2)result = num1;elseresult = num2;return result; 
}

函数参数
当调用函数时,有三种向函数传递参数的方式
【C++入门学习:基本语法】为了缩短学习周期,只记录部分不懂的语法

九、指针与引用

//	指针
int  var = 20;   // 实际变量的声明
int  *ip;        // 指针变量的声明
ip = &var;       // 在指针变量中存储 var 的地址//	引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。
int i = 17;
int& r = i;		// 为变量i声明引用r

十、C++ 的基本输入输出

#include <iostream>
using namespace std;int main( )
{char name[50];cout << "请输入您的名称: ";cin >> name;cout << "您的名称是: " << name << endl;
}

十一、“结构成员”和“类变量”引用

// 为了访问结构的成员,我们使用成员访问运算符(.)
struct Books
{char  title[50];char  author[50];char  subject[100];int   book_id;
};Books book;cout << book.book.title;// 为了访问类的成员,我们使用变量访问运算符(::)
class MyClass {
public:static int class_var;
};
int MyClass::class_var = 30;