本文主要是介绍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。(请注意内存空洞问题)
这篇关于32位机下的sizeof()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!