关于 c++的模板库中的数组模板 is_array_v的测试

(1)该模板的源代码如下:

cpp 复制代码
template <class>    // determine whether type argument is an array
bool is_array_v = false;

template <class _Ty, size_t _Nx>
bool is_array_v<_Ty[_Nx]> = true;

template <class _Ty>
bool is_array_v<_Ty[]> = true;

(2)测试代码如下,主要是如何给该模板传递模板参数

这里涉及了 c/c++ 里类型的语法定义:类型 B 视为数组,存储了三个 char 指针。 类型 C 视为指针类型,指向具有三个 char 元素的数组。

(3)再谈谈数组名 arr 与 &arr 的区别:

如图,对于变量名 b ,使用 b 代表使用 b 中的值, 使用 &b 代表使用变量 b 的地址。对于数组名 a 而言,使用名称 a 代表使用 数组的起始地址,使用 &a 也是使用 数组的 起始地址。两者是相同的。在监视窗口,c++ 编译器也是如此处理的。但 图中代码上还是有不同的效果。

但可见 c++ 编译器,依然如咱们学习的知识:把数组名处理成了数组起始地址。如下图:

相关推荐
程芯带你刷C语言简单算法题9 小时前
Day30~实现strcmp、strncmp、strchr、strpbrk
c语言·学习·算法·c
程序喵大人9 小时前
SQLITE问题整理
开发语言·数据库·c++·sqlite
天赐学c语言9 小时前
12.17 - 合并两个有序数组 && include<> 和 include““ 的区别
c++·算法·leecode
珹洺10 小时前
C++从入门到实战(二十二)stack的介绍和使用
开发语言·c++
郝学胜-神的一滴10 小时前
Linux下创建线程:从入门到实践
linux·服务器·开发语言·c++·程序人生·软件工程
FFZero110 小时前
C++ 内存模型与Memory Order深度解析
c++
leiming610 小时前
C++ 01 函数模板
开发语言·c++·算法
Chen--Xing10 小时前
LeetCode LCR 119.最长连续序列
c++·python·算法·leetcode·rust
xiaoye-duck10 小时前
吃透C++类和对象(上):封装、实例化与 this 指针详解
c++