c语言 实现sizeof功能,C语言简单实现sizeof功能代码
sizeof不是函數,而是運算符,C/C++語言編譯器在預編譯階段的時候就已經處理完了sizeof的問題,也就是說sizeof類似于宏定義。
下面給出一個sizeof的一個宏定義實現版本
#define sizeof(L_Value) ((char*)(&L_Value + 1) - (char*)(&L_Value))
實驗一:
#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
不過本文的mysizeof只能對已定義的變量求大小
實驗二:
#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;
}
此時會報語法錯誤,因為&a并不是我們定義的變量,詳細說是&a不是左值,用宏替換后變?yōu)?(char*)(&&a + 1) - (char*)(&&a)),&&a有語法錯誤。 我們的版本還是不夠強大啊,不知道C語言設計中是怎么實現的sizeof(&a)計算。
總結
以上是生活随笔為你收集整理的c语言 实现sizeof功能,C语言简单实现sizeof功能代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言编制编程语言,C语言CGI编程入门
- 下一篇: c语言sin函数近似值,用泰勒公式求si