当前位置:首页C语言 > 正文

数组作为函数参数,在函数内部sizeof(数组)的值是多少?

作者:野牛程序员:2023-10-30 10:10:39C语言阅读 2949

在32位系统下:

voidFunc ( char str[100])                              
     {     

        …    ;                                                                      
     }   

请计算 sizeof( str ) = 



答案:4



在函数声明 void Func(char str[100]) 中,char str[100] 作为函数的参数表示函数 Func 接受一个字符数组参数,该数组被命名为 str,并被声明为具有 100 个元素的字符数组。

然而,需要注意的是,在函数参数中,char str[100]char str[]char *str 是等效的,因为在函数参数中,数组的大小信息通常被忽略。所以,char str[100] 只是对这个数组的一种形式上的命名,但在函数内部,str 实际上会被看作一个指向字符的指针,而不是一个包含 100 个字符的数组。

这意味着在函数内部,你无法使用 sizeof 来获得数组的实际大小,因为 str 被解释为指针。如果你需要知道数组的实际大小,你应该将数组大小作为额外的参数传递给函数。


sizeof(str) 打印出数组 str 的大小。请注意,尽管 str 在函数参数中声明为 char str[100],但在函数内部,sizeof(str) 不会返回数组的实际大小,而仅返回指针的大小。

这是因为在函数参数中,数组的大小信息被丢失,str 实际上被解释为指向 char 的指针。因此,sizeof(str) 将返回指针的大小,通常是 4 或 8 字节,具体取决于你的编译环境。

sizeof(str) 返回指针的大小,通常为 4 或 8 字节,取决于编译环境的位数,即是 32 位系统还是 64 位系统。以下是一些一般性的情况:

  1. 32 位系统:在大多数 32 位编译环境中,指针的大小通常为 4 字节。这意味着 sizeof(str) 返回 4 字节。

  2. 64 位系统:在大多数 64 位编译环境中,指针的大小通常为 8 字节。这意味着 sizeof(str) 返回 8 字节。

编译环境的位数取决于操作系统和编译器的架构。在 32 位系统上,通常使用 32 位指针,而在 64 位系统上,通常使用 64 位指针。这是为了支持更大的内存寻址范围,因为 64 位系统可以寻址比 32 位系统更多的内存。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击