单元三-数组

知识点提问:
1. 什么是数组?数组的作用是什么或者说为什么要用数组?答:数组是相同类型的元素按一定顺序排列的集合。组成数组的哥哥变量称为数组的分量,也称为数组的元素,有时也称为下标变量。
2. 数组元素 在内存中如何存储的?对每个元素的访问是随机访问还是顺序访问》这样的访问方式有何有点?这种访问方式如何实现?答:堆栈存储。顺序访问:链表在内存中不是按顺序存放的,而是通过指针连在一起,为了访问某一元素,必须从链头开始顺着指针才能找到某一个元素。随机访问:数组在内存中是按顺序存放的,可以通过下标直接定位到某一个元素存放的位置。
3. 为什么要规定数组元素的类型必须相同即为同类型数据?答:数组就是相同类型的数据形成的集合。
4. 一个元素所占的内存大小是由什么确定的》?答:元素的类型
5. 数组的下标是从0开始还是从1开始的?是从0开始—>
6.如何定义数组?如何访问数组的元素?定义数组可以直接在定义的元素后增加[],括号内为数组的多少,访问数组,是元素+[],里面为第几个元素。有三种访问方式,”’int p[10];p[1],int *q=&p,q[1];*(q+3)”’
7. 整个数组所占的内存空间是在编译时还是运行时,确定的?用什么手段可以知道整个数组所占内存空间的大小?答:编译的时候只是确定内存的大小,实际分配是运行时分配/用sizeof函数可以知道空间的大小。
8. 多次运行同一个程序,其中数组元素的内存地址都是相同的吗?为什么?答:我觉得内存地址不同,只是需要的时候增加,不需要的时候释放。那么自然每次都是获取的新的。
9. 那些类型的数据可以作为数组的元素?有什么类型不可以作为数组元素?答:整型,浮点型等,同一类的数据。—?
10. 如果数组的元素也是数组,那么,对元素数组有什么要求?答:二维数组
11. C/C++是否检查数组的越界访问?编译器能发现数组的越界访问吗?答:不检查,C/C++是不检查数组下标是否越界可以有效提高程序运行的效率,因为如果你检查,那么编译器必须在生成的目标代码中加入额外的代码用于程序运行时检测下标是否越界,这就会导致程序的运行速度下降。因此为了程序的运行效率,C/C++才不检查下标是否越界。
12. 数组可以作为一个整体访问而非逐个元素访问吗?比如赋值?答:不能,除了0,其余必须单个赋值
13. 定义了数组,是否意味着内存为其开辟了存储空间?答:是
14. 数组的初始化是什么意思?定义数组时必须初始化吗?答:对数组初始赋值,定义时不初始化,那么之后也会初始化。
15. 什么是数组的完全初始化?什么是部分楚志红?答:对每一个数组中的值都给定一个确定的值是完全初始化,部分初始化是给部分的值给定一个初始值。定义时候给定数组的的大小,或者不给定也可以实现。
16. 定义数组时没有初始化,它的元素值等于多少?答:随机一个值
17. 定义二维数组时,其行列下标都必须是常量吗?答是
18. 一个二位数组可以用用俩个以为数组替代其使用吗?答:可以
19. 一个三维数组可以用三个以为数组替代其使用吗?答:可以
20. 二位数组在内存中是如何存储的?计算机内存是线性结构还是二维结构?答:与一维数组一样是线性存储。内存是线性结构
21. 为何要将二维及以上数组转为一维数组进行存储?答:计算机内存的结构, 线性更容易查找?
22. 对于m行n列矩阵,a[i][j]是什么意思?a[i][j]等于a[?],写出a[]里面的表达式?答:是第i行j列的值,?是iXm+j
23. 二维数组的完全、部分初始化是如何做的?举例说明?答:{0},{{0},{}},
24. 初始化时,二维数组的行数还是列数可以省略?为什么?如果省略了行数或列数,系统又是如何确定的?答:行数可以省略,列数不能。列数省略不能确定一排可以多少值,会形成定义的冲突。省略了行数,如果超过那个列数的值,会自动填充到下一行。
25. 如果将数组作为函数实参,其相应参数应为一个数组还是一个变量?答:一个变量。
26. 如果将整个数组作为函数的形参?有哪几种方式?实参怎么书写?答:int a[]。传递的是指针。值参数,引用参数。
27. 函数形参可以定义数组元素的引用吗?如何书写?答:用&
28. 函数形参可以定义数组的引用吗?如何书写?答:

void fun(int (&arr)[SIZE]);
注意,方括号中的SIZE必须要写,而且在调用的时候必须用这个SIZE的数组,否则会出错

  1. 什么是ASCII编码?它是几位编码?它最多能够对多少个字符进行唯一编码?答: 美国国家信息标志码;7位二进制码,最多能对128个字符进行编码。
  2. 那些字符集不能用ASCII编码?为什么?答:除英文字母,阿拉伯数字,标点符号外。ASCII编码的数量只有128位。
  3. 什么是字符数组?字符数组只能存储ASCII编码的字符吗?能存储汉字吗?答:存储字符的数组是字符数组,字符数组能存储汉字,但是单个的字符不能构成汉字,一个汉字由俩个字符构成。即数组可以构成汉字。
  4. 什么是字符串?存储在字符数组中的都是字符串吗?为什么?答:一连串的字符由string存储。是?
  5. 字符串的结束标志是什么字符?它的ASCII码十进制是多少?答:\0,0.
  6. NULL十进制值是多少?如何知道的?它可以是字符串的结束标识吗?答:0,查表,可以。
  7. 一个一维字符数组能存储多个字符串,它们之间用什么分隔?答:在相隔的地方添加空格字符
  8. 一个一维字符数组能存储多个字符串,有什么办法?答:在最后的末尾的字符定义结束标记\0。
  9. 一维字符数组最多能存储80个ASCII字符吗?
  10. 字符数组能存储整数吗?能存储什么类型的整数?为什么?答:能,0-9的整型。
  11. 定义存储n个字符的字符数组,其下标应为n还是n+1?答:n
  12. 定义字符数组时,其下标可以是变量吗?答:不能
  13. 如何将一个字符数组初始化为空串?有那几种方式?答:char str[10]=” “,char str[10]={‘\0’}; char str[10];str[0]=’\0’;
  14. 可以用直接字符串常量如“…”初始化一个字符数组吗?答:str[10]=”… “。
  15. 如何初始化一个字符数组?分别讨论一维,二维情况。答:如之前
  16. 除cin>>和cout<<外,可以对整个字符数组进行操作吗?如赋值?答:printf,赋值
  17. 用cin>>输入字符数组时,会跳过空白字符吗?有那些常用的空白字符?答:会。空格,跳格键TAB,回车。
  18. 输入时,如果不想跳过空白字符,有什么办法?答:cin>>noskipws>>bank[i];or bank[i]=cin.get();cin.get;cin.getline( );
  19. 有那些处理单个字符的库函数?功能是什么?去什么地方查阅?答:string,strcasecmp…,msdn查阅
  20. 有那些处理字符串的库函数?功能是什么?如何使用?去什么地方查阅,strstr,strtok。。。msdn查阅
  21. 如果字符数组中存储的不是字符串,可以用字符串操作函数如strcmp吗?答:不能?
  22. 对于charstr[10],strlen[10],sizeof(str)的结果相同吗?哪里不同?答,char无’\0’,strlen是字符,sizeof的字符宽度。
  23. 除char数组存储字符串外,还有string存储和处理字符串。string有何优势?答:不需考虑越界,可以直接相加,有很多函数。
  24. 使用string应该包含那个头文件?答:string
  25. 如何定义一个string字符串,如何定义string数组?答:string STRING,string STRING[10].
  26. 一维string数组只能存储一个字符串吗?一维字符数组呢?答:都可以多个
  27. string字符串的容量是固定的还是变化的?为什么?答:不固定的,可加,无需考虑越界。
  28. 有那些方式可以初始化一个string变量?都有什么要求和区别?答:如char字符初始化
  29. 如何将char字符转换string字符串?.c_str()和.data( )
  30. 如何将string字符串转换为char字符串?直接赋值,tostring()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值