int 数组的类型是什么
What is the type of an int array?
我正在阅读有关C++数组的信息。我尝试了以下代码:
int main()
{
int a[10];
int *p;
p = &a;
}
我收到编译器错误:
pointers.cpp:10:6: error: cannot convert ‘int (*)[10]’ to ‘int*’ in assignment
p = &a;
为了理解能够分配给指针的数组类型,我尝试了以下代码:
int main()
{
int a[10];
int *r[10];
r = a;
}
编译错误:
: error: incompatible types in assignment of ‘int [10]’ to ‘int* [10]’
r = a;
然后我试了这个:
int main()
{
int a[10];
int *r[10];
r = &a;
}
编译错误:
error: incompatible types in assignment of ‘int (*)[10]’ to ‘int* [10]’
r = &a;
int (*)[10]
的类型是什么?
>int (*)[10]
是指向 10 int
s 数组的指针。它指向整个数组。在你的第一个代码中,当你执行&a
时,你会得到整个数组的地址,该数组具有此类型。如果你想存储它,你必须写:
int (*r)[10] = &a;
在您尝试的代码中,int *r[10]
是一个指针数组(而不是指向数组的指针(。
另一方面,int*
指向单个int
。例如,您可以获取其中一个数组元素的地址,&a[0]
,这将是一个int*
。
int *p = &a[0];
事实上,数组的名称通常会经历一种称为数组到指针转换的隐式转换,其中它成为指向数组中第一个元素的指针。我们通常说数组衰减到指向其第一个元素的指针。
int *p = a; // Here, a is decaying
方法是传递第一个元素的地址:
int a[10];
int *p;
p = &a[0];
其他可以通过递增p
来访问:
p++;
int 数组的类型是什么?
每种尺寸都有不同的类型。例如,十个数组的类型是 int[10]
。还有一个不完整的类型int[]
,表示一个未知大小的数组。
int (*([10] 的类型是什么?
这是一个指向大小为 10 的数组的指针。
在你的第一个代码段中,&a
是指向数组的指针,你不能将其分配给指向单个int
的指针,因为int
和int[10]
是不兼容的类型。在其他示例中,r
是一个指针数组,您无法为数组分配任何内容。
您可以使用以下任一方法:
int *p = a; // implicit array-to-pointer conversion
int *p = &a[0]; // explicitly take address of element
分配指向数组第一个元素的指针。或者,如果你想要一个指向数组的指针(保留其类型的大小(,那就是
int (*p)[10] = &a;
额外的()
指示这是指向数组的指针,而不是指针数组。
你只需要做
int a[10];
int *p;
p = a;
赋值 p 数组 A 的地址;为其第一个元素分配 i-e 地址。
正如错误所说,它int (*)[10]
,所以你应该使用 int (*r)[10]
而不是 int *r[10]
。额外的()
是指向 10 个整数的数组和指向整数的 10 个指针的数组之间的区别。
- 静态自动 constexpr t = { "red" , "black" , "green" } 是什么类型;派生到?
- 这是什么类型的C++语法,我应该采取什么步骤来理解这一点
- 这在C++是什么类型的错误?
- int(int)& 或 int(int) const &是什么类型?
- 我如何找出3D容器的元素是什么类型
- 在 c 和 c++ 中,二维数组的元素是什么类型?
- 这个 lambda 的参数是什么类型?
- 转换逻辑目标是什么类型
- 如果我创建一个修改值的迭代器,静态成员"reference"应该是什么类型?
- 这是什么类型的行为
- 给定以下内容,"function"是什么类型?
- C++:文本文件中的数据是什么类型的
- C++11 中的"auto var = {condition} ? 1 : 1.0"是什么类型?是双精度还是整数?
- C++中的 decltype(this) 是什么类型
- 如何知道模板<类型名称类型>是什么类型?
- 内置数组的大小是什么类型?
- c++ 11中的std::chrono::high_resolution_clock::now()是什么类型?
- 在Microsoft Visual C++中,光线跟踪器应该是什么类型的项目
- 如何为delete编写一个C包装器,既快速又释放给定的任何类型,而不告诉它是什么类型
- 如何编写一个函数,无论数组是什么类型都输出它