开发者社区 问答 正文

为什么数组参数的大小与main中的大小不同?

为什么作为参数发送的数组大小与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)); } 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 11:21:07 389 分享 版权
1 条回答
写回答
取消 提交回答
  • 将数组类型传递给函数时,它会隐式转换为指针类型。

    所以,

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

    void PrintSize(int p_someArray) { printf("%zu\n", sizeof(p_someArray)); } 是等效的。所以你得到的是sizeof(int)

    2020-02-08 11:21:58
    赞同 展开评论
问答地址: