sizeof
来源:互联网 发布:office2007fix it 编辑:程序博客网 时间:2024/05/05 07:59
首先问个问题,sizeof是什么,是函数吗? sizeof 不是函数,而是地地道道的属于c++的关键字。顺便问一句c语言有几个关键字?c++又有几个?以上都是常识。。。。
sizeof有以下三种用法:
siezeof (type_name);
sizeof (expression);
sizeof expression; //注意这里可以没有括号
最后一种用法也说明了sizeof不是函数,因为函数传递参数是必须要借助括号的。但是要注意,当sizeof后接类型名时,必须要有括号,即sizeof int 是错误的,因为int关键字前只能有unsigned ,long 等,加个sizeof,编译器无法解释。
接着看下面的代码,请问输出多少
int a=10;
int *p=&a;
cout<<sizeof(*p+1)<<endl; //这里输出int类型占的字节,一般为4
cout<<a<<endl; //那么这里a的值是多少呢?答案是10,也就是说a并没有加1
实际上sizeof返回值是根据它后面表达式的类型来确定的,并且是在编译时确定的,并不对其后面的表达式进行计算,只确定其类型,然后返回值。这也就解释了为什么以下代码是正确的。
int a[sizeof (int)];
int i=10;
int b[sizeof (i+1)];
sizeof返回值是编译时常量。
再看sizeof与数组的关系,请分析下面各表达式的值为多少:
int a[100];
sizeof (a); //a是数组首元素地址,类型为指针,输出4(这里昨天不小心写错了,呵呵,这里数组名a不会转化为首元素地址,
//应该输出400)
sizeof (a[100]); //这里虽然下标越界,但是仍然认为a[100]为int 类型,输出4
sizeof (&a); //&a为数组地址,也属于指针,输出4
int fun(int a[100])
{
sizeof (a); //这里数组退化为指针,输出4
return 0;
}
- SIZEOF
- Sizeof
- sizeof
- sizeof
- sizeof
- sizeof
- sizeof
- sizeof............
- sizeof
- sizeof
- sizeof
- sizeof
- sizeof
- sizeof
- sizeof
- sizeof
- sizeof
- sizeof
- SIO_KEEPALIVE_VALS 用户异常掉线检测
- ruby中的实例变量和类变量
- Linux操作系统下安装phpmyadmin方法介绍
- Flex实现QQ网页提取天气信息
- 判断一个点是否落在多边形内
- sizeof
- Java线程:线程的同步与锁
- 无题
- 主题与皮肤系列(7)执行顺序
- Java线程:线程的交互
- 使用JFreeChart生成各种样式的图表
- Java线程:线程的调度-休眠
- java基础知识(一)
- Java线程:线程的调度-优先级