32位机下的sizeof()

 先申明一下,下面的程序都是运行在32位机上,默认是4字节对齐方式。

char str[] = “www.ibegroup.com” char *p = str ; int n = 10; 请计算 sizeof (str ) = ?

(1) sizeof ( p ) = ?

(2) sizeof ( n ) = ?

(3) void Foo ( char str[100]){ 请计算 sizeof( str ) = ?

(4) } void *p = malloc( 100 ); 请计算 sizeof ( p ) = ?

(5)

 #include<stdio.h>  
 #include<stdlib.h> 

void Foo ( char str[100]);

int main()

{ char str[] = "www.ibegroup.com";

char *p = str ;

int n = 10;

printf("%d\n%d\n%d\n",sizeof(str),sizeof(p),sizeof(n));

Foo(str);

void *qp =(void*) malloc( 100 );

printf("%d", sizeof (qp )); }

void Foo ( char str[100])

{ printf("%d\n", sizeof(str)); }

结果: 17 (字符1个字节一个,17个字符) 4 (指针类型的长度都是4个字节) 4 (int类型4个字节) 4 (传到函数里面的是指针,还是4个字节) 4 (指针,或叫地址就是4个字节)


 
 
 另: 
 int p[100]; 
 sizeof(p)=400; 
 整型数组的大小=数组长度*sizeof(int); 
 struct node{ 
 char a;
 short b;
 int c;
 } ; 
 sizeof(node)=8; 
 char类型默认是1个字节,short默认是2个字节,int默认4个字节。由于系统默认4字节对齐方式, 
 总的大小必须是4的整数倍,所以为8。(请注意内存空洞问题)
展开阅读全文

没有更多推荐了,返回首页