const 是什么

const

const 是什么

const (全称 constant 还是什么别的), 声明时的修饰符, 主要说明 变量在初始化后不能再次修改.

const 的用法

const /*变量名*/ = /*值*/;

注意:
在声明指针变量时, const 有两个修饰的位置:

  1. 在声明指针之前
const int* all = new int;
  1. 在声明指针中
int* const all = new int;

这两种声明的差别在于:

  1. 说明这个指针的值不会改变;
  2. 说明这个指针的指向地址不会改变.
    当然, 这两种可以同时用.

举例

题目: 抽奖2

std::vector<std::vector<int>> search(int* const all, bool* const visit, const int& k, const int& size = 9, std::vector<int> pushed = { })
{
	// 具体实现
}

在这里, 我就用第二种说明了 all 指针和 visit 指针的指向地址不变.
这个例子还包含了 默认参数引用, 初始化列表(C++11及以上) 的语法, 以后应该会有帖子

题外话

不知道为什么老师说我的代码:
根本不是给人看的…
例题的源代码:

#include <iostream>
#include <set>
#include <vector>

std::vector<std::vector<int>> search(int* const all, bool* const visit, const int& k, const int& size = 9, std::vector<int> pushed = { })
{
	static std::vector<std::vector<int>> total;

	if (k <= 0)
	{
		total.push_back(pushed);
		return { pushed };
	}
	for (int a = 0; a < size; a++)
	{
		if (visit[a])
		{
			continue;
		}

		visit[a] = true;
		pushed.push_back(all[a]);
		search(all, visit, k - 1, 9, pushed);
		pushed.pop_back();
		visit[a] = false;
	}

	return total;
}

int main()
{
	int n;
	std::cin >> n;
	int* all = new int[9] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	bool* visit = new bool[9] { false };

	for (std::vector<int> x : search(all, visit, n, 9))
	{
		for (int y : x)
		{
			std::cout << y << ' ';
		}
		std::cout << std::endl;
	}
}

相信你们能理解 (天知道我包含 <set> 干嘛)

参考网页:
cv(const 与 volatile)类型限定符 - cppreference.com

2 个赞

然而现在const 多被用于定义函数时表明这个值不会在函数中改变,而constexpr取代了之前const的位置

我一般 #define

你要不给个代码
Cppreference.com 给的解释 - constexpr 说明符 (C++11 起)

#define