sizeof用法總結

由於不同位數的操作系統計算結果可能不同,下面是在32位的win7 下計算的。

 

1 對於直接的調用sizeof,如果是數組首地址,sizeof會輸出數組所佔地址空間的大小(字節爲單位)。如果是一個指針的話,則輸出在該系統中地址的字節寬度,即(位寬/8)。

#include <stdio.h>


int main()
{
    char a[25];
 	char *b;

	printf("%d\n", sizeof(a));
	printf("%d\n", sizeof(b));
 
    return 0;
}

輸出:

25

4

 

2 如果數組是作爲函數的形參傳遞進來,那麼函數會把這個數組首地址當做指針。

即: C語言中,數組名作爲參數傳遞給函數時,退化爲指針;  當函數需要數組大小時,至少需要傳遞兩個參數:一個參數傳數組名,另一個傳數組大小。

#include <stdio.h>

void test_sizeof_addr(char *addr)
{
    printf("%d\n", sizeof(addr));
}
void test_sizeof_array(char array[])
{
    printf("%d\n", sizeof(array));
}

void test_sizeof_array_right(char array[],int size)
{
    printf("%d , %d\n", sizeof(array),size);
}
int main()
{
    char a[25];
 
    test_sizeof_addr(a);
    test_sizeof_array(a);
	test_sizeof_array_right(a,sizeof(a));
	printf("%d\n", sizeof(a));
	printf("%d, %d\n", sizeof(int),sizeof(long));
 
    return 0;
}

輸出:

4
4
4 , 25
25
4, 4

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章