c语言获取数组的长度

我的代码如下

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

int func(int nums[])
{
    printf("%d\n", sizeof(nums)/sizeof(int));
}

int main()
{
    int nums[] = {1,2,3,4,5,6};
    printf("%d\n", sizeof(nums)/sizeof(int));
}

为什么main函数里面的结果是6但是func函数里面 的结果是2呢?

阅读 2.7k
4 个回答

在 func 里,nums 虽然长得像一个数组,但是它不是一个数组,它只是一个指针。

要想在 func 获得“数组”得长度,只能通过参数传进来。

可以用ptype验证类型,是否顿悟?

image.png

新手上路,请多包涵

func里是一个指针,指针固定4字节,所以是2

func 函数穿的是一个int 类的指针所以sizeof(int) =4

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题