[英]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位环境中,按预期方式打印 4
和20
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.