gpt4 book ai didi

有人可以使我从 C 中的指针查找数组长度的方法无效吗

转载 作者:太空宇宙 更新时间:2023-11-04 03:39:11 25 4
gpt4 key购买 nike

我在 techgig Code Gladiator 中遇到了三个问题,它们的方法签名如下

int getMax(int [] a);

其中“a”是正整数数组。
根据我所知道的所有理论,我可以说这不足以用 C 程序解决这个问题。
通过观察,虽然我知道他们在理论上证明是错误的,但我想出了一个方法

for(i=0;a[i]>=0;i++);

在所有情况下都给出了正确的结果。
有人可以建议这是否可以用于所有操作系统和编译器吗?

最佳答案

该函数具有未定义的行为。没有什么能阻止编译器生成的目标代码扫描数组以外的内存。

我尝试了下面的简单程序

#include <stdio.h>

int getMax( int a[] )
{
int i = 0;
for ( ; a[i] >= 0; i++ );

return i;
}

int main( void )
{
int x = 0;
int a[] = { 1, 2, 3 };
int y = 4;

printf( "&x = %p, a = %p, &y = %p\n", &x, a, &y );
printf( "%i\n", getMax( a ) );
}

我得到了以下结果

&x = 0302FF00, a = 0302FF04, &y = 0302FEFC
55

如您所见,55 与数组的大小不相近:)。

在另一台电脑上运行这段代码我得到了结果

&x = 0xbf8704ac, a = 0xbf8704a0, &y = 0xbf87049c
4

关于有人可以使我从 C 中的指针查找数组长度的方法无效吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30023773/

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