首页 > 试题广场 >

32位系统,函数void Func(char str[100

[单选题]
32位系统,函数void Func(char str[100]){}中sizeof(str)的大小为()
  • 4
  • 5
  • 6
  • 7
数组传参时  会退化成指针。
话说 有个100的选项还有点迷惑作用,这连有都没有
发表于 2020-09-21 21:12:46 回复(0)
指针储存地址大小与int相同为四个字节
发表于 2018-12-12 17:06:01 回复(0)
对于函数参数列表中的以数组类型书写的形式参数,编译器把其解释为普通的指针类型,即char *str
发表于 2020-08-05 22:53:07 回复(0)
注意与sizeof(str)本身性质区分:此处并非是求整个str数组的大小(即答案100的误区)
    p.s 数组名是首元素的大小地址:(只有两个例外)1.sizeof(数组名) - 数组名为整个地址
                                                                                      2. & 数组名 - 数组名表示整个数组
对于定义函数中出现以数组形式的形式参数,编译器会把它解释成相对应类型的指针(数组传参时候,会退化成指针)此处为char *,又考虑在32位系统,故其指针大小为4.
发表于 2022-06-18 09:46:22 回复(0)
在32位系统中,指针的大小为4字节。因此,函数void Func(char str[100]){}中sizeof(str)的大小为4字节,而不是100字节。这是因为在函数中,数组参数会被隐式地转换为指针类型,所以sizeof(str)实际上是指针的大小。
发表于 2023-06-18 23:17:47 回复(0)
仅在以下3种情况中,数组不会退化成指针
  1. 使用sizeof(a)的时候,所以上面sizeof(a)的结果为6字节
  2. 对数组名取地址操作:&a。&a的类型为pointer to array of 6 chars,而对字符串指针取地址结果为pointer to pointer to char.
  3. 使用字符串初始化数组的时候也不会退化。
发表于 2024-02-22 22:32:46 回复(0)
对于函数参数列表中的以数组类型书写的形式参数,编译器把其解释为普通的指针类型,即char *str
发表于 2023-02-16 21:56:55 回复(0)