C++ Primer 中文版 学习笔记(三)

本文详细阐述了C++中数组和指针的使用规则、性能考量、替代方案以及注意事项。重点包括数组复制、性能优化策略、string类型的引入、非const变量限制、数组初始化方式、void*指针操作、引用与指针的区别、数组越界访问、const指针的特性、初始化vector对象的方法等关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第四章数组和指针

1、不允许数组直接复制和赋值。

2、现代C++程序更多地使用vector迭代器来取代数组,数组被         严格限制于程序内部使用,只有当性能测试表明使用vector无         法达到必要的速度要求时,才使用数组。

      采用string类型取代C风格字符串(以’\0’结束)

3、非const变量以及要到运行阶段才知道其值得const变量都不能用于定义数组的维数。

4、定义数组时,如果没有显示的提供元素初值,则数组元素会像普通变量一样初始化:

        1) 在函数体外定义的内置数组,其元素均初始化为0

        2) 在函数体内定义的内置数组,其元素无初始化

        3) 不管数组在哪里定义,如果其元素为类类型,则自动调用该类的默认构造函数进行初始化;

        4) 如果该类没有默认构造函数,则必须为该数组的元素提供显示初始化。

        5) 显示初始化的数组不需要制定数组的维数值,编译器会根据列出的元素个数来确定数组的长度。

5、void*指针只支持几种有限的操作:

        1.   与另一指针进行比较;

        2.   向函数传递void*指针;

        3.   从函数返回void*指针;

        4.   给另一个void*指针赋值。

         5.   不允许使用void*指针操纵它所指向的对象。

6、指针和引用的比较

虽然使用引用和指针都可间接访问另一个值,但它们之间有两个重要区别。

      第一个区别在于引用总是指向某个对象:定义引用时没有初始化式错误的。

      第二个重要区别则是赋值行为的差异:给引用赋值修改的是该引用所关联的对象的值,而并不是使引用与另一个对象关联

7C++允许计算数组或对象的超出末端的地址,但不允许对此地址进行解引用操作。

8C++语言强制要求指向const对象的指针也必须具有const特性。

9const型的指针一经定义,就不允许修改其所指对象的值。

         可以直接给该对象赋值或间接地利用普通的非const指针修改。

10、永远不要忘记字符串结束符null

 

11、使用数组初始化vector对象 

   使用数组初始化vector对象,必须指出用于初始化式的第一个元素以及数组最后一个元素的下一位置的地址。

   const size_t arr_size = 6;

   int int_arr[arr_size]={0,1,2,3,4,5};

   //ivec has 6 elements:each a copy of thecorresponding element in int_arr

   vector<int> ivec(int_arr,int_arr+arr_size);

 

 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值