| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3346 人关注过本帖
标题:再问一个小白问题。。
只看楼主 加入收藏
哒哒哒啦啦啦
Rank: 1
等 级:新手上路
帖 子:75
专家分:4
注 册:2016-2-26
结帖率:76.92%
收藏
已结贴  问题点数:20 回复次数:12 
再问一个小白问题。。
#include <iostream>
using std::cout;
using std::endl;
int main()

{
    int ia[3][4] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
    for (auto &i : ia)                                          
    //1.为毛线必须auto,int就报错?2.i前加引用为了防止数组指向首地址的指针,那感觉ia前也要加&呢?因为只有j是单个元素嘛。。。
        for (int j : i)
            cout << j << " ";
    return 0;
}
 

[此贴子已经被作者于2016-3-21 20:50编辑过]

搜索更多相关主题的帖子: include return 毛线 元素 
2016-03-21 20:48
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:5 
感觉你学的挺高大上的,完全看不懂……
2016-03-21 21:36
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:5 
C++11for 语句新特性
2016-03-21 21:41
哒哒哒啦啦啦
Rank: 1
等 级:新手上路
帖 子:75
专家分:4
注 册:2016-2-26
收藏
得分:0 
回复 2楼 wengbin
别啊,版主大大,看我这都没有超过十行的。。
2016-03-21 21:43
哒哒哒啦啦啦
Rank: 1
等 级:新手上路
帖 子:75
专家分:4
注 册:2016-2-26
收藏
得分:0 
回复 3楼 hjx1120
是新特性呀,,可是我那样想的就不对啊,不太明白。。
2016-03-21 21:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
就算不報錯,這樣的輸出結果是你寫這個代碼的意圖嗎?符合就沒問題,不符合才問爲什麽。

授人以渔,不授人以鱼。
2016-03-21 22:14
哒哒哒啦啦啦
Rank: 1
等 级:新手上路
帖 子:75
专家分:4
注 册:2016-2-26
收藏
得分:0 
回复 6楼 TonyDeng
auto 是对的,int不行,但是觉得auto完了就应该是int啊。。
2016-03-21 22:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用哒哒哒啦啦啦在2016-3-21 22:51:43的发言:

auto 是对的,int不行,但是觉得auto完了就应该是int啊。。

你定義的是“二維”數組,在這個循環裏,你猜或希望循環變量是什麽類型?運行結果體現出編譯器給你推斷的auto是什麽類型?這東西不能全交給編譯器啊,你寫auto,不等於自己也不知道應該是什麽類型——編譯器編譯之後的代碼是實際的類型,不存在auto這東西,那是給你書寫省事用的,不改變變量的實際類型。

其實對C++14標準,我並不看好auto的語法,我從來不寫這個。

授人以渔,不授人以鱼。
2016-03-21 23:01
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:5 
哎,三个问题我都没看懂你在说什么。有点儿像英语考试,每个字母都认识,就是不知道讲的是什么故事。

    int ia[3][4] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
    for( auto i : ia )
        for( auto j : i )
            cout << j << " ";
就相当于
    for( int (&i)[4] : ia )
        for( int j : i )
            cout << j << " ";

for( int (&i)[4] : ia ) 改为 for( int i[4] : ia ) 肯定不行,因为 数组可没有拷贝构造的能力
for( int (&i)[4] : ia ) 改为 for( int* i : ia ) 这一句是行了,但下一句for( int j : i )就不行了,因为int*是没有begin/end的。
2016-03-22 08:46
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:0 
是你的那个for循环我看不懂,呃……版主的问题……我是小白,可能是脸熟了,成了版主……
2016-03-22 09:38
快速回复:再问一个小白问题。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015775 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved