*iter++
是一个符合表达式,可分解为*iter
和++iter
,自增++
的优先级要比解引用*
的优先级要高,但是后缀自增表示先返回原本的值,再进行自增。也就是说上面的语句和*-i(ter++)
是完全一样的。
Ai解释“这是一个后缀递增操作符。它会返回当前的 iter 值,然后将 iter 增加一个位置。例如,如果 iter 当前指向向量的第一个元素,iter++ 会返回指向第一个元素的迭代器,然后将 iter 移动到第二个元素的位置。”
注意区分前缀自增自减和后缀自增自减的区别,前缀是立即修改,并返回修改后的值;后缀是先返回原本值,再进行修改值。- sizeof()函数
int cnt[10];
int *p=cnt;
std::cout << sizeof(cnt)<< std::endl;
//整个数组的大小
std::cout << sizeof(*cnt)<< std::endl;
//第一个元素的大小
std::cout << sizeof(p) << std::endl;
//指针本身的大小,64位系统为8,32位系统为4
std::cout << sizeof(*p) << std::endl;
//指针对象的大小 - 动态内存分配
int *dest = new **int**[num];
int *dest 是定义一个指向 int 类型的指针,用于存储 new 操作返回的内存地址。
new int[num] 是 C++ 中的动态内存分配操作,它会在运行时从堆中分配一块连续的内存区域,这块内存区域的大小足以存储 num 个 int 类型的元素。
注意区分前后的int区别,第一个int表示的指针类型,第二个int表示的是分配的动态内内存是int类型的。