现在的位置: 首页 > 综合 > 正文

sizeof

2013年09月01日 ⁄ 综合 ⁄ 共 1732字 ⁄ 字号 评论关闭

 sizeof 操作符
siseof 操作符的作用是返回一个对象或类型名的字节长度它有以下三种形式
sizeof (type name );
sizeof ( object );
sizeof object;
返回值的类型是size_t

 

#include <cstddef>
int ia[] = { 0, 1, 2 };
// sizeof 返回整个数组的大小
size_t array_size = sizeof ia;
// sizeof 返回int 类型的大小
size_t element_size = array_size / sizeof( int );

 

sizeof 操作符在编译时刻计算因此被看作是常量表达式

 

#include <string>
#include <iostream>
#include <cstddef>
int main()
{
size_t ia;
ia = sizeof( ia ); // ok
ia = sizeof ia; // ok
// ia = sizeof int; // 错误
ia = sizeof( int ); // ok
int *pi = new int[ 12 ];
cout << "pi: " << sizeof( pi )
<< " *pi: " << sizeof( *pi )
<< endl;
// 一个string 的大小与它所指的字符串的长度无关
string st1( "foobar" );
string st2( "a mighty oak" );
string *ps = &st1;
cout << "st1: " << sizeof( st1 )
<< " st2: " << sizeof( st2 )
<< " ps: " << sizeof( ps )
<< " *ps: " << sizeof( *ps ) //这里不是字符串长度而是string类的大小
<< endl;
cout << "short :/t" << sizeof(short) << endl;
cout << "short* :/t" << sizeof(short*) << endl;
cout << "short& :/t" << sizeof(short&) << endl;
cout << "short[3] :/t" << sizeof(short[3]) << endl;
}
编译并运行它产生如下结果
pi: 4 *pi: 4
st1: 12 st2: 12 ps: 4 *ps: 12
short : 2
short* : 4
short& : 2

short[3] : 6

 

char* ss = "0123456789";
sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针/////////////////////////////////你要的答案
sizeof(*ss) 结果 1 ===》*ss是第一个字符

char ss[] = "0123456789";
sizeof(ss) 结果 11 ===》ss是数组,计算到/0位置,因此是10+1
sizeof(*ss) 结果 1 ===》*ss是第一个字符

char ss[100] = "0123456789";
sizeof(ss) 结果是100 ===》ss表示在内存中的大小 100×1
strlen(ss) 结果是10 ===》strlen是个函数内部实现是用一个循环计算到/0为止之前

int ss[100] = "0123456789";
sizeof(ss) 结果 400 ===》ss表示再内存中的大小 100×4
strlen(ss) 错误 ===》strlen的参数只能是char* 且必须是以''/0''结尾的

===========

char ghost[15= "galloping";
 
char * str = "galloping";

 int n1 = strlen(ghost);             //字符数组中字符的实际长度
   int n2 = strlen(str);               //指针指向的字符数组的实际长度
   int n3 = strlen("galloping");       //字符串中字符的实际长度

   
int n4 = sizeof(ghost);             //字符数组分配空间大小
   int n5 = sizeof(str);               //指针分配的空间大小

   int n6 = sizeof("galloping");       //字符串分配空间大小,注意最后一位要加上'/0'

抱歉!评论已关闭.