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

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

為什么數(shù)組參數(shù)的大小與main中的大小不同?

為什么數(shù)組參數(shù)的大小與main中的大小不同?

C C++
慕工程0101907 2019-05-29 16:50:15
為什么數(shù)組參數(shù)的大小與main中的大小不同?為什么作為參數(shù)發(fā)送的數(shù)組的大小與main中的相同?#include <stdio.h>void PrintSize(int p_someArray[10]);int main () {     int myArray[10];     printf("%d\n", sizeof(myArray)); /* As expected, 40 */     PrintSize(myArray);/* Prints 4, not 40 */}void PrintSize(int p_someArray[10]){     printf("%d\n", sizeof(p_someArray));}
查看完整描述

4 回答

?
小唯快跑啊

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

將數(shù)組類型傳遞給函數(shù)時(shí),會隱式轉(zhuǎn)換為指針類型。

所以,

void PrintSize(int p_someArray[10]) {
    printf("%zu\n", sizeof(p_someArray));}

void PrintSize(int *p_someArray) {
    printf("%zu\n", sizeof(p_someArray));}

是等價(jià)的。所以你得到的是價(jià)值sizeof(int*)


查看完整回答
反對 回復(fù) 2019-05-29
?
拉風(fēng)的咖菲貓

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

它是一個(gè)指針,這就是為什么它是一個(gè)常見的實(shí)現(xiàn),將數(shù)組的大小作為第二個(gè)參數(shù)傳遞給函數(shù)


查看完整回答
反對 回復(fù) 2019-05-29
?
楊魅力

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

正如其他人所說,當(dāng)用作函數(shù)參數(shù)時(shí),數(shù)組會衰減到指向第一個(gè)元素的指針。還值得注意的是,sizeof不評估表達(dá)式,并且在與表達(dá)式一起使用時(shí)不需要括號,因此您的參數(shù)實(shí)際上根本不被使用,因此您也可以使用類型而不是值來編寫sizeof。

#include <stdio.h>void PrintSize1 ( int someArray[][10] );void PrintSize2 ( int someArray[10] );int main (){
    int myArray[10];
    printf ( "%d\n", sizeof myArray ); /* as expected 40 */
    printf ( "%d\n", sizeof ( int[10] ) ); /* requires parens */
    PrintSize1 ( 0 ); /* prints 40, does not evaluate 0[0] */
    PrintSize2 ( 0 ); /* prints 40, someArray unused */}void PrintSize1 ( int someArray[][10] ){
    printf ( "%d\n", sizeof someArray[0] );}void PrintSize2 ( int someArray[10] ){
    printf ( "%d\n", sizeof ( int[10] ) );}


查看完整回答
反對 回復(fù) 2019-05-29
?
江戶川亂折騰

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

因此,您需要將數(shù)組的長度作為第二個(gè)參數(shù)傳遞。當(dāng)您編寫代碼時(shí),您既要聲明一個(gè)常量大小的數(shù)組,然后將該數(shù)組傳遞給函數(shù),那么讓數(shù)組長度常量顯示在代碼中的幾個(gè)位置是很痛苦的...

K&R救援:

#define N_ELEMENTS(array) (sizeof(array)/sizeof((array)[0]))

所以現(xiàn)在你可以這樣做:

int a[10];...myfunction(a, N_ELEMENTS(a));


查看完整回答
反對 回復(fù) 2019-05-29
  • 4 回答
  • 0 關(guān)注
  • 600 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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