原文: http://blog.163.com/[email protected]/blog/static/1669557492011825111853370/
一直都认为C++学的可以,现在才发现被鄙视了,一些非常基础的知识搞不清楚。
sizeof一些小解。
一:
#include <iostream>
using namespace std ;
class A
{
public :
int a ;
static int b ;
A() ;
~A() ;
}; //sizeof = 4 很简单。
class B
{
public :
int a ;
char b ;
B() ;
~B() ;
}; //sizeof = 8 内存对齐,数据对齐
class C
{
public :
float a ;
char b ;
C() ;
~C() ;
}; //sizeof = 8 内存对齐,数据对齐
class D
{
public :
float a ;
int b ;
char c ;
D() ;
~D() ;
}; //sizeof = 12 内存对齐,数据对齐
class E
{
public :
double a ;
float b ;
int c ;
char d ;
E() ;
~E() ;
};
int main()
{
cout << sizeof( A ) << endl ;
cout << sizeof( B ) << endl ;
cout << sizeof( C ) << endl ;
cout << sizeof( D ) << endl ;
cout << sizeof( E ) << endl ;
return 0 ;
}
二:
#include <iostream>
using namespace std ;
void fun( char ch[] )
{
cout << sizeof( ch ) << endl ;
}
int main()
{
char ch[] = "adsasd" ;
fun( ch ) ;
return 0 ;
}
先了解下面这个事:
void fun( char ch[] )
Void fun( char* ch )
Void fun( char ch[10] )
上面三条语句都是相等的,上面的ch都会转换指针,在fun函数中ch是指针而不是数组的第一个元素的地址。
因此上面三条语句,无论那条cout << sizeof( ch ) << endl ; 都会得到 4 , Int(指针) 的大小。