sizeof() 的使用

sizeof()  他是運算符, 而不是函數。不能被表象所迷惑,雖然他有一個括號,但是他確實不是函數。
他可以用於求各種變量,函數等所有可以表示出來的東西的長度。
例如:

       sizeof(fun()); 

       void fun() {}
       這個也是被允許的, 求出來的結果是1 。

寫這些主要是加深對sizeof() 的記憶力。在現在的公司招聘中,sizeof() 已經開始佔據着一種很重要的位置。
很多公司都樂此不彼的出一些sizeof() 相關的題來考考應聘者。
其中以下是常見的幾種示例。這裏以代碼的形式表現出來:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

double fun()
{
	printf("hello world...");
	return 0;
}

void fun1(char s[])
{
	printf("sizeof(s) = %d\n",sizeof(s));
}


int main()
{
	printf("\n********************************************************\n");
	// 出現的概率最高
	char a[] = "abcdef";
	char aa[10] = "abcdef";
	printf("sizeof(a) = %d\tsizeof(aa) = %d\n", sizeof(a), sizeof(aa));
	printf("strlen(aa) = %d\n", strlen(aa));
	
	printf("\n********************************************************\n");
	// 深入點,必考
	char *p = a;
	printf("sizeof(*p) = %d\tsizeof(p) = %d\n", sizeof(*p), sizeof(p));
	
	// 對上面進行鞏固,int 跟char 是一樣的
	int b[10];	
	printf("%d\n", sizeof(b));
	
	printf("\n********************************************************\n");
	// sizeof 對函數也是通殺
	printf("sizeof(fun) = %d\n", sizeof(fun));	// 1        這個很有意思(還不明瞭)
	printf("&fun = %p\n", fun);
	printf("sizeof(fun()) = %d\n", sizeof(fun()));	// 8     這個也很有意思(這個是返回值的長度)
	
	printf("\n********************************************************\n");
	// 指針的時候情況又是怎樣呢?
	char *str1 = "abcde";
	char str2[10]="abc";
	char *q = malloc(100);
	printf("sizeof(q) = %d\n", sizeof(q));
	printf("sizeof(str1) = %d\n", sizeof(str1));	// sizeof 包含'\0'
	printf("strlen(str1) = %d\n", strlen(str1));	// strlen 不包含'\0'
	printf("sizeof(str2) = %d\n", sizeof(str2));
	printf("sizeof(\"abc\") = %d\n", sizeof("abc"));
	
	
	printf("\n********************************************************\n");
	// 調用函數中會將數組轉換爲指針,故而是4
	fun1(a);
	
	return 0;
}








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