sizeof详解
***************************************************
更多精彩,歡迎進(jìn)入:http://shop115376623.taobao.com
***************************************************
sizeof()功能:計(jì)算數(shù)據(jù)空間的字節(jié)數(shù)
#include<iostream.h>
#include<stdio.h>
#include<string.h>
using namespace std;
struct
{
short a1; //short占2字節(jié)
short a2;
short a3;
} A;
cout<<sizeof(A)<<" ?";//==6 ?三個(gè)類型一樣,所以為2*3=6
struct
{
long a1; //long占4字節(jié)
short a2;//short占2字節(jié)
} B;
cout<<sizeof(B)<<" ?";//==8 ?short被對(duì)齊為和long一樣長(zhǎng),所以為4+4=8
int main()
{
char *ss1= "0123456789";
cout<<sizeof(ss1)<<" ?"; //==4 ss1為一個(gè)字符指針,指針大小是個(gè)定值,就是4個(gè)字節(jié)
//拓展:
float *p ; 或double *p ; ?? ??cout<<sizeof(p); ?結(jié)果為4
charss2[] = "0123456789";
cout<<sizeof(ss2)<<" ?";//==11 ss2為字符數(shù)組,故為求整個(gè)字符數(shù)組的大小
//注意兩個(gè)的區(qū)別,一個(gè)是指針,一個(gè)是字符數(shù)組,故sizeof的作用對(duì)象不同
charss3[100] =?"0123456789";
cout<<sizeof(ss3)<<" ?";//==100 這個(gè)字符數(shù)組開(kāi)始預(yù)分配了100個(gè)字節(jié)。char占用一個(gè)字節(jié)
intss4[100];
cout<<sizeof(ss4)<<" ?";//==400 ?每個(gè)整形變量占空間4,所以4*100=400
charq1[] = "abc";
cout<<sizeof(q1)<<" ?";//==4 與ss2類似,注意字符數(shù)組后面還有個(gè)結(jié)束字符
charq2[] = "a\n";
cout<<sizeof(q2)<<" ?";//==3 ?/n為一個(gè)字節(jié),整個(gè)占3字節(jié)
char *q3= "a\n";
cout<<sizeof(q3)<<" ?";//==4 ?q3為指針
char *str1 = (char *)malloc(100);
cout<<sizeof(str1)<<" ?";//指針?biāo)詾?
void *str2= (void *) malloc(100);
cout<<sizeof(str2)<<" ?";//指針?biāo)詾?
return 0;
}
說(shuō)明:
在默認(rèn)情況下,為了方便對(duì)結(jié)構(gòu)體內(nèi)元素的訪問(wèn)和管理,當(dāng)結(jié)構(gòu)體內(nèi)的元素長(zhǎng)度都小于處理器的位數(shù)的時(shí)候,便以結(jié)構(gòu)體里面最長(zhǎng)的數(shù)據(jù)元素為對(duì)其單位,也就是說(shuō),結(jié)構(gòu)體的長(zhǎng)度是最長(zhǎng)數(shù)據(jù)元素的整數(shù)倍。
如果結(jié)構(gòu)體內(nèi)存在長(zhǎng)度大于處理器位數(shù)的元素,那么就以處理器的位數(shù)為對(duì)齊單位
double 8?
float 4
int 4
long 4?
char 1
總結(jié)
- 上一篇: 天涯明月刀ol最新服务器列表,天涯明月刀
- 下一篇: 全面解析特斯拉自动驾驶体系