2006-11-19

見鬼了,指標無敵啦!

說什麼 in-place 可以節省記憶體空間。只要餵 pointer 過去就無敵了,可是怎麼偵測正確的 sizeof() 呢? o_O? 頭大!


Code:

    #include <stdio.h>

    int foo(int *pA);
    int foo2(int A[]);

    int main(void)
    {
    int A[] = { 5, 7 };
    int *pA = A;

    printf("%d\n", sizeof(A));
    printf("%d\n", sizeof(*pA)); // 其實我是第一個元素的大小
    printf("%d\n", sizeof(*(pA + 1))); // 我是第二個元素的大小
    printf("%d\n", foo(pA));
    printf("%d\n", foo2(A)); // 其實我也是傳第一個指標過去而已
    return 0;
    }

    int foo(int *pA)
    { return sizeof(*pA); }

    int foo2(int A[])
    { return *(A + 1); }


Output:

    8
    4
    4
    4
    7

沒有留言: