2010/10/31

2010/10/31

关键字:数组

 

数组声明

数组的维数必须用值大于等于1的常量表达式定义。包括整型字面值、枚举常量或用常量表达式初始化的const对象。即数组的维数必须在编译时确定。

#include <vector>

using std::vector;

 

const int bufsize = 10;

 

int GetSize()

{

    return 0;

}

 

const int i = GetSize();                //i位于常量内存区中,未初始化

int main()

{

    char array[i];                      //错误,运行时才知道i的值

    char array1[bufsize*10/2+1-3];      //正确,编译时就可以知道i的值

    int j = 1;

    char array2[j];                     //错误,虽然j是用常量表达式初始化的,

                                        //但是直到运行时才知道j的值

    char array3[0];                     //错误,必须非零

    char array4[1111111111111111];      //编译错误

                                        //error C2148: total size of array must not exceed 0x7fffffff bytes

                                        //0x7fffffff是有符号型位整型的最大值

    vector<int> vec1(i);                //正确

    vector<int> vec2(bufsize*10/2+1-3); //正确

    vector<int> vec3(j);                //正确

    vector<int> vec4(0);                //正确

    vector<int> vec5(1111111111111111); //编译时就可以检测参数大小会报警告或

                                        //错误,如果报警告则运行时抛异常

 

    return 0;

}

 

简单的总结下,位于常量内存区中及静态全局内存区并且是已初始化的变量,在编译时是已知的,才可以作为数组的维数.vector的元素个数除了非负数和太大之外,没其他限制.

通过编译器的报错也可以知道在VC8,数组最大为0x7fffffff.

 

数组初始化

1.     内置类型数组,在函数体内的数据未初始化;

2.     内置类型数组,函数体外则初始化为0;

3.     不管数组在哪里定义,如果其元素为类类型,则自动调用该类的默认构造函数初始化,如果没有默认构造函数,则必须为该数组的元素提供显式初始化;

 

 

class A

{

private:

    int a;

};

A g_Array[3];       //3个对象的a都被初始化为0

int main()

{

    A array[3];     //3个对象的a都未初始化

 

    return 0;

}

初始化时调用的是类A的默认构造函数A(){},该函数不做任何事情,只负责分配内存并初始化变量.初始化变量的规则与初始化一般变量相同.

 

陷阱

char ca1[] = {'C', '+', '+'};           //正确,大小为3

char ca2[] = {'C', '+', '+', '/0'};     //正确,大小为4

char ca3[] = "C++";                     //正确,大小为4

char ca4[3] = "C++";                    //错误,字面值常量字符串都有一个’/0’作为结尾

 

程序员必须自己检查数组下标,编译器无法检测到缓冲区溢出(buffer overflow).

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(1)根据所提供的日期,提取月份 (2)请对2010年各地区各产品的销售情况进行分析(图表展现) (3)请对各个业务员的业绩进行分析(图表展现) (4)请对各季度的业绩进行分析(图表展现),同时给出商家一些可以提高销售业绩的建议 日期 地区 业务员 品名 销量(个) 单价(元) 销售额(元) 月份 2010/1/6 A 张三 订书机 95 25 2375 2010/1/23 B 王五 钢笔 50 35 1750 2010/2/9 B 周六 钢笔 36 35 1260 2010/2/26 B 周六 笔记本 360 15 5400 2010/3/15 C 田七 订书机 600 25 15000 2010/4/1 A 李四 铅笔 930 0.5 465 2010/4/18 B 周六 订书机 740 25 18500 2010/5/5 B 周六 钢笔 960 35 33600 2010/5/22 C 田七 钢笔 530 35 18550 2010/6/8 A 李四 笔记本 410 15 6150 2010/6/25 B 王五 订书机 940 25 23500 2010/7/12 A 张三 铅笔 280 0.5 140 2010/7/29 A 张三 订书机 81 25 2025 2010/8/15 A 张三 钢笔 35 35 1225 2010/9/1 B 周六 钢笔 65 35 2275 2010/9/18 A 李四 笔记本 93 15 1395 2010/10/5 B 周六 订书机 28 25 700 2010/10/22 A 李四 铅笔 640 0.5 320 2010/11/8 A 李四 订书机 870 25 21750 2010/11/25 B 周六 钢笔 620 35 21700 2010/12/12 B 周六 钢笔 550 35 19250 2010/12/29 A 李四 笔记本 74 15 1110 2010/1/15 B 王五 订书机 46 25 1150 2010/2/1 B 王五 铅笔 870 0.5 435 2010/2/18 A 张三 订书机 32 25 800 2010/3/7 C 赵大 钢笔 70 35 2450 2010/3/24 B 王五 钢笔 50 35 1750 2010/4/10 B 王五 钢笔 66 35 2310 2010/4/27 A 李四 笔记本 96 15 1440 2010/5/14 B 周六 笔记本 53 15 795 2010/5/31 B 周六 订书机 80 25 2000 2010/6/17 B 周六 订书机 27 25 675 2010/7/4 A 李四 铅笔 620 0.5 310 2010/7/21 B 周六 铅笔 550 0.5 275 2010/8/7 B 周六 订书机 42 25 1050 2010/8/24 C 田七 订书机 76 25 1900 2010/9/10 B 王五 钢笔 69 35 2415 2010/9/27 C 赵大 钢笔 76 35 2660 2010/10/14 C 赵大 钢笔 57 35 1995 2010/10/31 B 王五 钢笔 47 35 1645 2010/11/17 B 王五 笔记本 110 15 1650 2010/12/4 B 王五 笔记本 94 15 1410 2010/12/21 B 周六 笔记本 28 15 420 excel
最新发布
07-17
首先,根据提供的数据,我们可以进行以下操作: 1. 根据日期提取月份: 在H2单元格中输入以下公式,并将其拖动到H列的下方单元格中: =MONTH(A2) 这将提取出日期列中的月份,并在H列中显示。 2. 对2010年各地区各产品的销售情况进行分析: 可以使用数据透视表来分析销售情况。按照以下步骤操作: - 将数据复制到一个新的工作表,并确保列标题正确。 - 在Excel菜单栏中选择“插入”,然后点击“数据透视表”。 - 在“创建数据透视表”对话框中,选择“选择一个范围”并输入数据范围。例如,假设数据位于Sheet1的A1:H41,输入A1:H41。 - 选择“新工作表”,然后点击“确定”。 - 在新的工作表中,将“地区”拖放到“行”区域,将“品名”拖放到“列”区域,将“销售额(元)”拖放到“值”区域。 - 在数据透视表字段列表中,将“月份”拖放到“筛选器”区域,并选择要分析的特定月份。 - 根据需要进行调整和格式化,以展现销售情况。 3. 对各个业务员的业绩进行分析: 同样,可以使用数据透视表来分析业绩情况。按照以下步骤操作: - 在新的工作表中,将“业务员”拖放到“行”区域,将“销售额(元)”拖放到“值”区域。 - 根据需要进行调整和格式化,以展现业绩情况。 4. 对各个季度的业绩进行分析: 在I2单元格中输入以下公式,并将其拖动到I列的下方单元格中: =IF(MONTH(A2)<=3, "第一季度", IF(MONTH(A2)<=6, "第二季度", IF(MONTH(A2)<=9, "第三季度", "第四季度"))) 这将根据提取的月份确定对应的季度,并在I列中显示。 然后,根据季度和销售额,使用数据透视表或其他图表工具进行分析和展示。 至于提高销售业绩的建议,可以根据分析结果得出一些结论,例如: - 哪些产品在哪些地区销售额较高,可以进一步加大推广力度。 - 哪些业务员的业绩较好,可以给予相应的奖励和激励措施。 - 哪个季度的销售额较低,可以重点关注和加强销售策略。 根据具体情况,您可以制定更具体的建议来提高销售业绩。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值