C++ Primer 4.9 sizeof 运算符 4.10 逗号运算符 知识点+练习题 (vector sizeof为什么是是固定大小的简单解释,不深入)

3c10a5b73ee5498c9484548b7b746080.png

sizeof运算符

Sales_data data,*p;//p为无效指针,没有为其分配内存空间
sizeof p;//指针所占空间大小
指针所占空间大小由操作系统是几位决定,32位则4位字节(4*8=32),64位则8位
sizeof *p;//即sizeof(Sales_data)
无效指针也可以用sizeof,返回指向对象类型的大小,!!!记住sizeof(除数组,string,vector)始终求类型大小
sizeof Sales_data::revenue;//求类成员大小,c++11新标准 可用::写
constexpr size_t sz=sizeof(ia)/sizeof(*ia);//求数组元素个数
所得值为size_t类型(足够大,表示表示在内存中的数)的常量表达式

 vector sizeof为什么是是固定大小的简单解释

深入解释需要更了解stl源码,先留下疑问

简单解释是vector由三个指针控制,这三个指针的大小就为其固定大小

#include<iostream>
#include<vector>

using namespace std;

int main(void)
{
    //指针占4位,应为32位
    vector<int> v={1,2,3,4,5};
    cout<<sizeof(int)<<" "<<sizeof v<<endl;//输出4,12(3*4)并不是5*4
 
    return 0;
}

练习题

4.29
10 元素个数
1 p指向首元素 *p是int类型而不是整个数组,4/4=1(与103页问题一致,有时间整理)

#include<iostream>
#include<vector>

using namespace std;

int main(void)
{
    
    int x[10]={1,2,3,4,5,6,7,8,9,10};
    int *p=x;//指向首元素
    cout<<sizeof(p)<<endl;
    cout<<sizeof(p)/sizeof(*p)<<endl;//指针占4位,int占四位
    cout<<*p<<endl;//输出为1
    return 0;
}
4.30
sizeof > +
-> > sizeof
sizeof > <
() > sizeof ()函数调用符
(sizeof x)+y
sizeof(p->mem[i])
(sizeof a)<b
sizeof (f())
4.31 此题用前置后置都可以,但为了效率,尽量用前置
4.32 对数组进行遍历,用ix和ptr都可以
4.33 ,的优先级最低,所以 
(somevalue ? ++x,++y:--x),--y 
先判断somevalue真值:true ++x ++y
                    false --x
后--y

待整理

1.vector固定大小深入理解

2.*p=arry *p=&arry p++ 

 

 

 

 

 

 

 

 

 

 

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值