指针将指针的指针等同于指针指向指针.不可能
Pointers to pointers to pointer equated to a pointer to a pointer. Not possible?
考虑以下代码片段:
#include <iostream>
using namespace std;
int main()
{
char *sr[] = {"manipuri","konkani","punjabi","hindi","telugu","maithili","odia"};
char **pt[] = {sr+2,sr+4,sr+3,sr+1,sr+6}, ***r;
r = pt;
for(int i=0;i<4;i++) ++r;
cout << **r+3;
return 0;
}
这就是我的理解。'sr'是指向角色数组的指针。它的价值是" Manipuri"的" M"的地址。" pt"是针对角色数组的指针的一系列指针。它的价值是其他指针的地址。'r'是指向角色指针指针的单个指针。
如何将'pt'分配给" r"?它们是完全不同的数据类型。一方面," R"指向指针指向指针,该指针指向单个字符的指针。虽然PT是一个指向指针指向字符数组的指针。
这是怎么可能的?
这就是我的理解。'sr'是指向字符数组的指针。
sr
不是指针。这是一系列指针。
它的值是" manipuri"的" m"的地址。
从概念上讲,数组的值是数组的所有元素。但是,当在价值上下文中使用时,数组将腐烂到指针到第一个元素。指针的值是一个内存地址。
如何将'pt'分配给" r"?它们是完全不同的数据类型。
因为就像sr
和其他数组一样,pt
也会腐烂到指向第一个元素的指针。pt
的元素是**char
类型。因此,指向pt
元素的指针为***char
。这是r
的类型。
不可能?
是的,可以将类型T[n]
的对象分配给类型T*
的对象。
pt是一个指向指针指向字符数组的指针。
pt
是一个数组。阵列本身并不指向。它包含指向指向单个字符的指针的指针。碰巧的是,单个字符在数组中(字符文字) - 但事实绝不是由pt
的类型描述。
ps。您正在将字符串文字转换为char*
。自C 11以来,这种隐式转换已被不良形成。甚至在C 11之前,转换都被弃用。
相关文章:
- 为什么指针不写入类的地址?
- 链表删除功能的单指针 // 是可能的
- 为什么"具有常量成员的结构"类型的指针不能指向"具有非常量成员的结构"?
- 当目标指针不是基类的类型时,为什么允许dynamic_cast为多态类生成 null 指针?
- 如何创建指针链?我想创建具有指向更多对象的指针的对象,该对象具有指针.这可能吗?
- 比较两个 constexpr 指针不是 constexpr?
- 为什么智能指针不能用通常的指针方式声明
- C++ 在向量中使用指针是否可能导致指针悬空?
- C# HashSet VS C++ std::unordered_set 使用自定义类键。C++慢...不可能。如何实现 C# 的速度?
- 为什么在C++不可能递增或进行数学运算,例如在声明为数组的变量上乘法
- 字符指针不递增?
- C++为什么原始指针不会增加shared_ptr的引用计数?
- 为什么在C++中使用delete后指针不为NULL
- 堆指针不会被分配给数组有什么原因吗
- 指向类中函数方法的指针不起作用
- fopen 与常量字符 * 从 QString 是不可能的
- 分配取消引用的字符指针真的不可能吗?
- 指针将指针的指针等同于指针指向指针.不可能
- C 不可能的指针行为
- 不可能:此指针作为默认参数.为什么