第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么sizeof(param_array)是指針的大???

為什么sizeof(param_array)是指針的大???

C
湖上湖 2019-11-04 11:03:38
我想得到一個(gè)數(shù)組的長(zhǎng)度,比如說(shuō)int array[] = {1, 2, 3, 4}。我曾經(jīng)sizeof那樣做。int length(int array[]){     return sizeof(array) / sizeof(int);}int main(){    int array[] = {1, 2, 3, 4};    printf("%d\n", length(array)); // print 1    printf("%d\n", sizeof(array) / sizeof(int)); // print 4}那么,為什么sizeof(array)in函數(shù)length返回指針大小array?但是在功能上main,它起作用。而且,如何修改length函數(shù)以獲取數(shù)組的長(zhǎng)度?
查看完整描述

3 回答

?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊

一條特殊的C規(guī)則表示,對(duì)于函數(shù)參數(shù),數(shù)組類型將調(diào)整為指針類型。這意味著:


int length(int array[]);


相當(dāng)于


int length(int *array);


因此,當(dāng)您計(jì)算sizeof數(shù)組時(shí),實(shí)際上是在計(jì)算指針的大小。


(C99,6.7.5.3p7)“參數(shù)聲明為“類型數(shù)組”應(yīng)調(diào)整為“類型的合格指針”,其中類型限定符(如果有)是在數(shù)組的[和]中指定的類型推導(dǎo)?!?/p>


查看完整回答
反對(duì) 回復(fù) 2019-11-04
?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊

正如其他答復(fù)者所指出的,聲明為采用數(shù)組的函數(shù)的編譯方式與采用指針的方式相同。


我見(jiàn)過(guò)的最常見(jiàn)的長(zhǎng)度方法是使用#define,但是如果您使用模板玩弄技巧,則可以使函數(shù)起作用。


template <size_t _Size> inline int length(int(& array)[_Size])

{

    //return sizeof(array) / sizeof(int);

    return _Size;

};


int array[] = {1, 2, 3, 4};

printf("%d\n", length(array)); // print 4

對(duì)于長(zhǎng)度為4的數(shù)組,此方法將被編譯為采用長(zhǎng)度為4的數(shù)組并返回靜態(tài)4的方法。這還具有以下優(yōu)點(diǎn):如果嘗試傳遞非數(shù)組的內(nèi)容,則編譯器將給出錯(cuò)誤,而#define方法則沒(méi)有。


int* foo = array;

printf("%d\n", length(foo)); 

    // error C2784: 'int length(int (&)[_Size])' : could not deduce template

    //     argument for 'int (&)[_Size]' from 'int *'

    // test.cpp(56) : see declaration of 'length'


查看完整回答
反對(duì) 回復(fù) 2019-11-04
?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊

在主程序中,編譯器知道數(shù)組的長(zhǎng)度。在子例程中,沒(méi)有。特別地,在子例程中,type int[]的參數(shù)與type的參數(shù)相同int *。另一方面,在主程序中,array具有type int[4]。(您可以通過(guò)嘗試向arrayin 分配另一個(gè)值來(lái)進(jìn)行測(cè)試main。編譯器會(huì)抱怨。)


查看完整回答
反對(duì) 回復(fù) 2019-11-04
  • 3 回答
  • 0 關(guān)注
  • 516 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)