Gamepad & WSN

混淆的c语言知识点:sizeof关键字

日期: 2013-01-30    作者: Gamepader    分类: 碎碎念    标签: ,     评论: 0    超过41人围观

首先申明:sizeof是32个c语言关键字中的一个,它是关键字,不是函数!
下列测试基于以下平台:
Windows7,P3处理器(32bit),编译器:

1
2
3
4
5
6
7
8
9
10
11
12
$ gcc -v
Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs
Configured with: /usr/build/package/orig/test.respin/gcc-3.4.4-3/configure --ver
bose --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libe
xecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-langu
ages=c,ada,c++,d,f77,pascal,java,objc --enable-nls --without-included-gettext --
enable-version-specific-runtime-libs --without-x --enable-libgcj --disable-java-
awt --with-system-zlib --enable-interpreter --disable-libgcj-debug --enable-thre
ads=posix --enable-java-gc=boehm --disable-win32-registry --enable-sjlj-exceptio
ns --enable-hash-synchronization --enable-libstdcxx-debug
Thread model: posix
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)

example 1:

    1
    2
    void *p = NULL;
    printf("void *p = NULL;\tsizeof(p)=%d",sizeof(p));

    输出为:void *p = NULL; sizeof(p)=4

    1
    2
    int *p = NULL;
    printf("int *p = NULL;\tsizeof(p)=%d",sizeof(p));

    输出为:int *p = NULL; sizeof(p)=4

example 2:

    1
    2
    3
    4
    5
    int a[100];
    printf("int a[100];\tsizeof(a)=%d\n",sizeof(a));
    printf("int a[100];\tsizeof(a[100])=%d\n",sizeof(a[100]));
    printf("int a[100];\tsizeof(&a)=%d\n",sizeof(&a));
    printf("int a[100];\tsizeof(&a[0])=%d\n",sizeof(&a[0]));

    输出为:
    int a[100]; sizeof(a)=400
    int a[100]; sizeof(a[100])=4
    int a[100]; sizeof(&a)=4
    int a[100]; sizeof(&a[0])=4

example 3:

    1
    2
    3
    int i = -20;
    unsigned j = 10;
    printf("i+j=%d",i+j);

    输出为:
    i+j=-10

example 4:

    const volatile value表示不应修改value的值,但是value的值可能随时会被外部(如:硬件)修改。
    volatile标识一个变量意味着这个变量可能被非本程序的其他过程改变,例如某个访问这一变量的某中断程序。为变量加上这一标识可以禁止编译器的优化,使程序正确地按设计者的意图运行。
    如果一个变量不会被本程序改变,通常可能给它加上const,但如果该变量可能被其他程序改变而本程序又在检测这个变量的值,就需要给它加上volatile,于是变量就同时有volatile和const了。
本文链接:https://blog.gamepader.com/archives/2013/01/confuse-c-language-knowledge-keyword-sizeof.html
本文分类:
>>
除特别标注,本站所有文章均为原创、转载请注明出处。

-- EOF -- ,Leave a msg~~ ^_^

发表评论

loading...