【C++ Primer】数组和指针总结

第四章 数组和指针

 

1.        数组的初始化,如a[x],这个x可以有三种表示方法:

[1]      整形字面值常量,int x=27;之所以叫字面值是因为只能从字面上来看,常量是不能修改。可用十进制、八进制和十六进制。int long

[2]      枚举常量:enum a(x1,x2,x3):枚举成员是常量,默认的后边的值比前一个大1.

[3]      用常量表达式初始化的整型const对象。如const b=3;char a[b];

2.        函数体外定义的内置数组,元素初始化为0;体内定义,则无初始化。

3.        数组初始化 char a=”ab”;chara={‘a’,’b’,’/0’};是等价的。“ab”其实是三个字符。

4.        数组和vector的区别:数组长度固定,没有获取容量的size操作,不能自动添加元素的push_back操作。不能直接复制

5.        数组下标:size_,const  size_t a=10;

 vector下标vector::size_type,都是从0开始计数。

6.        数组里边的字符要按空格或者换行来输入呀傻瓜。

7.        指针用于指向单个对象,而迭代器只能用于访问容器内的元素。

8.        每个指针都有个与之对应的数据类型,string*p1,p2;只有p1是指针。

9.        避免使用未初始化的指针,很多错误都源于此。

10.    int x=30;px=&x;这是赋值

*px=&x;这个是取地址

11.    C++中无法检测一个指针是否未被初始化,页无法检测地址是否有效。

12.    int*p=&x;相当于两句话:int*p;p=&x;

13.    指针和引用:

相同点:都可以间接访问另一个值。

区别:引用需要初始化,一经初始化指向一个特定的值。指针可指向不同的对象。

14.    const对象的地址也只能付给一个const对象的指针,即指向const对象的指针也须有const特性。

15.    只能用const void*类型的指针保存const对象。

16.    指向const对象的指针和const指针,前者所指向的值不能改变,后者指针的值不能改变。

string s;

typedef string *pstring;

const pstring cs1=&s;

pstring const cs2=&s;

string *const cs3=&s;

这三个都是常量const指针。第一个容易搞混,一般写第二个哟。

17.    cons tint cp;cp=xp1;这个赋值是错误的,因为cp是const变量,即常量,不能被赋值。

18.    C风格字符串,需包含头文件#include<cstring>.

[1]      strlen(s);返回s的长度,不包括字符串结束符Null

[2]      strcmp(s1,s2)比较两个字符串是否相等,=.0;>,1;<,负数。

[3]      strcat(s1,s2)s2连接到s1后边,返回s1

[4]      strcpy(s1,s2)将s2复制给s1,返回s1

[5]      strncat(s1,s2,n)将s2的前n个字符连接到s1后边,返回s1

[6]      strncpy(s1,s2,n)将s2的前n个字符复制给s1,返回s1

19.    char表示单个字符,但是chara[100]是个字符数组啦,所以没事~~

20.    使用C语言字符串时容易溢出,而使用C++字符串string时不用管,标准库负责所有的内存管理问题。

21.    数组类型变量的限制:长度固定不变,编译时需要知道其长度,数组只在定义它的块语句内存在。

22.    每个程序在执行时都占用一块可用的内存空间,用于存放动态分配的对象。此内存空间称为程序的自由存储区或堆。

 

动态数组

23.    动态数组只需指定类型和长度,无须说明数组名,通过其间接地址访问堆中的对象。如:

new int[10];

24.    动态内存的初始化,若数组元素具有类类型,则使用默认构造函数进行初始化,如果是内置类型,则无初始化。

25.    const对象动态数组无法直接赋值,只好对数组进行值初始化咯。const int*pci=new cons tint[100]();

26.    允许动态分配空数组,

27.    size_t n=get_size();

int *p=newint[n];

28.    释放动态空间,delete[] pia;回收pia所指向的数组。

29.    编写程序用int型数组初始化vector对象vector<int>ivec(in_arr,in_arr+arr_size);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值