#includeint main()
{
int arr[10] = { 1,2,3,4,5 };
printf("%p\n", arr);
printf("%p\n", &arr[0]);
printf("%d\n", *arr);
//輸出結(jié)果
return 0;
}
綜上結(jié)果可以看出打印數(shù)組名的地址與打印數(shù)組第一個元素的地址相同,那么
數(shù)組名就是數(shù)組首元素的地址
為什么sizeof(arr)打印出來的結(jié)果為40?
1. sizeof(數(shù)組名),計算整個數(shù)組的大小,sizeof內(nèi)部單獨放一個數(shù)組名,數(shù)組名表示整個數(shù)
組。
2. &數(shù)組名,取出的是數(shù)組的地址。&數(shù)組名,數(shù)組名表示整個數(shù)組
除了上述兩種情況外,所有的數(shù)組名都代表數(shù)組首元素的地址
三、數(shù)組元素連續(xù)存放,地址由低到高#includeint main()
{
int arr[10] = { 0 };
int i = 0;
for (i = 0; i< sizeof(arr) / sizeof(arr[0]); ++i)
{
printf("&arr[%d] = %p\n", i, &arr[i]);
}
return 0;
}
仔細(xì)觀察輸出的結(jié)果,我們知道,隨著數(shù)組下標(biāo)的增長,元素的地址,也在有規(guī)律的遞增。 由此可以得#includeint i;
int main()
{
i--;
if (i >sizeof(i))
{
printf(">\n");
}
else
{
printf("<\n");
}
return 0;?
}
C語言中,0為假,非0即為真。
全局變量,沒有給初始值時,編譯其會默認(rèn)將其初始化為0。
i的初始值為0,i--結(jié)果-1,i為整形,sizeof(i)求i類型大小是4,按照此分析來看,結(jié)果應(yīng)該選擇B,但是sizeof的返回值類型實際為無符號整形,因此編譯器會自動將左側(cè)i自動轉(zhuǎn)換為無符號整形的數(shù)據(jù),-1對應(yīng)的無符號整形是一個非常大的數(shù)字,超過4或者8,故實際應(yīng)該選擇A
這道題其實很隱蔽,真是蝦仁豬心?。?!
六、表達式求值
A.表達式求值先看是否存在整形提升或算術(shù)轉(zhuǎn)換,再進行計算
B.表達式真正計算的時候先看相鄰操作符的優(yōu)先級決定先算誰
C.相鄰操作符的優(yōu)先級相同的情況下,看操作符的結(jié)合性決定計算順序
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧