数组和指针

数组

显示初始化数组元素
如果没有显示提供元素初值,则数组会像普通变量一样初始化:
在函数体外定义的内置数组,其元素均初始化为0;
在函数体内定义的内置数组,其元素无初始化;
如果元素为类类型,则自动调用该类的默认构造函数进行初始化;如果没有默认构造函数,则必须为该数组的元素提供初始化。

与vector类型不同,数组的长度是固定的。

创建和释放动态数组
通常在编译时无法知道数组的维数,所以才需要动态创建该数组

int i = 10
int *p = new int[i];//uninitialized
int *s = new int[5](1,2,3,4,5);//initialized

delete []p;
delete []s;

指针

指针和数组用于低级操作。现代的c++程序采用vector类型和迭代器取代一般的数组、采用string类型取代c风格字符串。

void*指针
C++提供特殊的指针类型void*,它可以保存任何类型对象的地址;
支持有限的操作:
与另一个指针比较;
向函数传递void*指针或从函数返回void*指针
给另一个void*指针赋值。
不允许使用void*指针操纵它所指向的对象。

指针的算数操作

ptrdiff_t n = ip2-ip;//ok distance between the pointers

ptrdiff_t是标准库类型,在cstddef头文件中定义。是signed整型

c风格字符串标准库函数
strlen(s) 永远不要忘记字符串s结束符null;
strcpy(s1,s2) 必须确保目标字符串有足够大的空间;
strncpy(s1,s2,n) 能拷贝制定长度n的字符串,但如果n比s2中的size长度还要大,数组还是会溢出。

解决办法:采用string类型取代c风格字符串

多维数组和指针

int ia[3][4];
int (*ip)[4] = ia;
ip = &ia[2];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值