C++ 范围for语句关于指针数组

#include<iostream>
using namespace std;
int main()
{
    int p1[] = { 1,2,3 }, p2[] = { 4,5,6 };
    int* ia[] = { p1,p2 };
    for (auto& a : ia)
    {
        for (auto& s : a)
            cout << s;
    }
}

E2291    此基于范围的“for”语句需要适合的 "begin" 函数,但未找到


初学C++,不理解,希望大佬解答,感谢。

for循环要有初始化的值哦,也就是begin

for循环可以这样进行使用!

但是, for (auto& a : ia)得到的是两个数组的首地址;

然而这样遍历无法得知每个数组的大小,所以会出问题;

我简单的调试了一下,给出一些修改意见:

1. ia可以for (auto& a : ia),但是它遍历出来的是int *类型,所以下面无法再继续for (auto& s : a)遍历;

2. 由于得到的是一个指针,也就是数组的首地址,但是并不知道对应数组的元素个数,所以也无法正常遍历,因此,只能判断指针存储的数据,因为对应野指针的数值乱值。

3. 然后指针自增一即可。

#include<iostream>
using namespace std;
int main() {
	int p1[] = { 1,2,3 }, p2[] = { 4,5,6 };
	int* ia[] = { p1,p2 };

	for (auto a : ia) {		
		while (*a > -1) {
			cout << *a << ", ";
			a++;
		}
	}
}

 

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

 

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y