繁体   English   中英

C ++指向数组的指针

[英]C++ pointer to an array

我知道在C ++中,数组的名称只是指向数组第一个元素的指针。 例如:

int foo[5];

=> foo是int类型的指针,它指向数组中的第一个元素,即[0]

但是,我们有这个:

int (*foo)[5]

这里, foo是一个指向数组类型的指针。 那么foo是一个指针(int类型)的指针吗?

这是一个由五个整数组成的数组:

int a[5];

这是一个指向五个整数数组的指针:

int (*p)[5] = &a;

这是一个指向int的指针:

int * q = a;  // same as &a[0]

在C ++中,数组的名称只是指向数组第一个元素的指针

这是不正确的:数组的名称可以“免费” 转换为相应的指针类型,但它绝对不是指针。 最简单的方法是比较指针和数组的大小:

int foo[5];
int *ptr;
cout << sizeof(foo) << endl;
cout << sizeof(ptr) << endl;

第二个示例是指向大小为5的int数组的指针。

cout << sizeof(foo) << endl;
cout << sizeof(*foo) << endl;

在32位环境中,按预期方式打印 420

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM