gpt4 book ai didi

c - 为什么 char*p[10] 被编译器认为是 char** p?

转载 作者:太空狗 更新时间:2023-10-29 15:55:00 25 4
gpt4 key购买 nike

<分区>

我一直在摆弄,看看是否有任何方法可以在传递给函数时自动保留有关数组长度的信息(请参阅此处的其他问题:Why is this array size "workaround" giving me a warning?),但我的问题更多是关于 gcc 的警告给予对我来说没有意义。

根据 this网站(编辑:我误读了网站),char *p[10] 声明了一个指向 10 宽字符数组的指针。但是当我试图将一个指向数组的指针传递给一个函数时,我从编译器那里得到了这个错误信息:

enter image description here

这是程序的其余部分:

enter image description here

我知道当一个数组被传递给一个函数时,它会衰减为一个指针(丢失有关其长度的信息),但似乎声明本身正在衰减。这是怎么回事?

编辑:当我将 char *p[10] 替换为 char (*p)[10] 时,它不会不再发出警告,更重要的是,它显示正确的数组长度:10。我想我的问题是 1) 为什么括号会改变东西?和 2) 这是一个众所周知的解决方法,还是我依赖​​于无法保证的编译器的某些行为? (即可以通过间接传递指向它的指针来传递数组长度信息?)

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com