码迷,mamicode.com
首页 > 编程语言 > 详细

c++第十七天

时间:2017-02-16 13:21:14      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:round   越界   定义   bsp   灵活   ++   unsigned   while   编译器   

p101~p104:

1、数组中的元素个数也属于数组类型的一部分。

 

2、编译的时候数组的维度应该是已知的,也就是说维度必须是 const expression

 

3、const expression 是指值不会改变并且在编译过程就能得到计算结果的表达式。

 

4、不存在引用的数组,但是存在数组的引用。

 

5、在使用数组下标的时候,通常将其定义为 size_t类型

 

6、数组所用的下标运算符是由 C++语言直接定义的。

 

7、编译器不会检查下标是否越界!

 

练习3.27

(a)非法。buf_size 不是一个常量表达式
(b)合法。
(c)当 txt_size()是 constexpr 时正确;否则错误
(d)非法。没有空间可存放空字符!

 

练习3.28

全局变量被初始化为 null或 0,
而局部变量的值是未定义的。

 

练习3.29
相比于 vector来说:
1)数组的初始化不灵活。(必须提供一个常量表达式)
2)数组的容量无法动态改变。

 

练习3.30
访问非法内存区域。元素ia[10]是未定义的,

int iap[10]仅定义了下标0到9的元素。

 

练习3.31

int main()
{
    int arr[10];
    for (int i = 0; i < 10; ++i) {
        arr[i] = i;
    }
    return 0;
}

 

练习3.32

1

int main()
{
    int arr[10];
    for (int i = 0; i < 10; ++i) {
        arr[i] = i;
    }
    int arr2[10];
    for (int i = 0; i < 10; ++i) {
        arr2[i] = arr[i];
    }
    return 0;
}

2

#include<vector>
using std::vector;
int main()
{
    vector<int> ivec;
    for (int i = 0; i < 10; ++i) {
        ivec.push_back(i);
    }
    vector<int> ivec2 = ivec;    // 参考p88
    return 0;
}

 

练习3.33

#include<iostream>
using std::cin;
int main()
{
    unsigned scores[11];
    unsigned grade;
    while (cin >> grade) {
        if (grade <= 100) {
            ++scores[grade/10];
        }
    }
    for (auto x: scores) {
        std::cout << x << std::endl; 
    }
}

运行的结果就是

D:\labs>prog1
2
3
4
5
^Z
4199108
4199104
0
4200976
6422240
6422296
6422476
1983763024
1362710793
4294967294
1983738842

 

c++第十七天

标签:round   越界   定义   bsp   灵活   ++   unsigned   while   编译器   

原文地址:http://www.cnblogs.com/xkxf/p/6404832.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!