sizeof(函数名)=?
生活随笔
收集整理的這篇文章主要介紹了
sizeof(函数名)=?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
sizeof(函數名)=?
直接上代碼
#include <stdio.h>int foo(void) {printf("hello\n");return 0; }int main(void) {printf("%lu\n", sizeof(foo));printf("%lu\n", sizeof(&foo));printf("%lu\n", sizeof(foo())); }假設保存為文件 1.c
編譯:
$ gcc -Wall -pedantic 1.c -std=c99 warning: invalid application of ‘sizeof’ to a function type [-Wpointer-arith]printf("%lu\n", sizeof(foo));運行結果是:
1 8 4解釋:
-pedantic 選項:顯示所有的 ISO C 和 ISO C++ 警告。
對于 sizeof(foo),我覺得應該是函數指示符自動轉換成指針,答案應該是 8,但是并不是這樣,編譯器得出 1. 看來標準不允許把函數指示符作為 sizeof 的操作數,或者說這么做沒有意義。
sizeof(&foo):函數指示符被顯式地轉換成指向函數的指針,所以答案是 8
sizeof(foo()):sizeof 的操作數是函數的返回類型,所以是 4
【End】
總結
以上是生活随笔為你收集整理的sizeof(函数名)=?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dokuwiki 的管理和使用(补充)
- 下一篇: python爬虫小工具——editplu