c++第十七天

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

 

posted @ 2017-02-16 11:16  xkfx  阅读(162)  评论(0编辑  收藏  举报