c语言 实现sizeof功能,C语言简单实现sizeof功能代码
sizeof不是函數(shù),而是運(yùn)算符,C/C++語(yǔ)言編譯器在預(yù)編譯階段的時(shí)候就已經(jīng)處理完了sizeof的問(wèn)題,也就是說(shuō)sizeof類(lèi)似于宏定義。
下面給出一個(gè)sizeof的一個(gè)宏定義實(shí)現(xiàn)版本
#define sizeof(L_Value) ((char*)(&L_Value + 1) - (char*)(&L_Value))
實(shí)驗(yàn)一:
#define mysizeof(L_Value) ((char*)(&L_Value + 1) - (char*)(&L_Value))
int main(){
int a[5]={1,2,3,4,5};
printf("%d",mysizeof(a));
char c=getchar();
return 0;
}
輸出:20
不過(guò)本文的mysizeof只能對(duì)已定義的變量求大小
實(shí)驗(yàn)二:
#define mysizeof(L_Value) ((char*)(&L_Value + 1) - (char*)(&L_Value))
int main(){
int a[5]={1,2,3,4,5};
printf("%d",mysizeof(&a));
char c=getchar();
return 0;
}
此時(shí)會(huì)報(bào)語(yǔ)法錯(cuò)誤,因?yàn)?amp;a并不是我們定義的變量,詳細(xì)說(shuō)是&a不是左值,用宏替換后變?yōu)?(char*)(&&a + 1) - (char*)(&&a)),&&a有語(yǔ)法錯(cuò)誤。 我們的版本還是不夠強(qiáng)大啊,不知道C語(yǔ)言設(shè)計(jì)中是怎么實(shí)現(xiàn)的sizeof(&a)計(jì)算。
總結(jié)
以上是生活随笔為你收集整理的c语言 实现sizeof功能,C语言简单实现sizeof功能代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言编制编程语言,C语言CGI编程入门
- 下一篇: c语言sin函数近似值,用泰勒公式求si