C++ 墙角知识 04 我是用C++来写C的程序员.

数组的元素应该为对象,因此不存在 引用的数组.

不允许使用一个数组初始化另一个数组,也不允许把一个数组赋值给另一个数组.

int * a[10]; 没有括号的情况,这定义一个数组,里面是 指针.
int (*a) [10]; 有括号时, 定义一个指针, 指向 int a[10]; 这样的数组.
int (&a) [10]; 有括号时,定义一个引用, 引用 int a[10]; 这样的数组.
可以由内向外阅读 这样的声明.

size_t是一种机器相关的 无符号类型,它被设计的足够大,能表示内存中任意对象的大小. 在 #include < cstddef.h>

维度是数组类型的一部分.

任何出现字符串字面值的地方都可以用以空字符结束的字符数组来替代.

我是用C++来写C的程序员.

因为数组和指针好像一样,
所以以\0结尾的数组 和 字符串 也很像.

但是如果一处地方需要C字符串,无法直接用string来代替它.
为此,string提供了一个c_str()的函数, 该函数返回C风格的字符串.
也就是说,该函数的返回结果是一个指针.指向以空字符结尾的 字符数组.
结果指针类型是 const char *

不保证c_str()返回的数组一直有效,如果要长期使用的话,最好是自己再拷贝一份吧.

使用数组,初始化vector, 只需要指明数组首地址,和尾后地址 就可以了.
int a[] = {1,2,3};
vector < int> ivec(a, a+3);

缓冲区溢出的主要原因是 使用越界的索引访问 数组,vector,string等.

想要使用类模板,想要提供关于类型的辅助信息.
如 vector< int> a;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值